From d8f676ad00f7053180bcbdb91b8abe511eae208e Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期四, 10 四月 2025 15:53:20 +0800 Subject: [PATCH] #motion == null时释放小车 --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java | 500 +++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 393 insertions(+), 107 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java index 8a31403..9c93ced 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java @@ -10,6 +10,8 @@ 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.framework.exception.CoolException; +import com.zy.asrs.wcs.core.action.LiftAction; 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; @@ -17,6 +19,8 @@ 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.command.LiftAssignCommand; +import com.zy.asrs.wcs.core.model.command.LiftCommand; import com.zy.asrs.wcs.core.model.enums.*; import com.zy.asrs.wcs.core.service.*; import com.zy.asrs.wcs.core.utils.OpenUtils; @@ -30,13 +34,11 @@ import com.zy.asrs.wcs.rcs.model.command.LedCommand; import com.zy.asrs.wcs.rcs.model.enums.ShuttleProtocolStatusType; import com.zy.asrs.wcs.rcs.model.enums.SlaveType; +import com.zy.asrs.wcs.rcs.model.protocol.LiftProtocol; import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol; import com.zy.asrs.wcs.rcs.model.protocol.StaProtocol; import com.zy.asrs.wcs.rcs.service.DeviceService; -import com.zy.asrs.wcs.rcs.thread.BarcodeThread; -import com.zy.asrs.wcs.rcs.thread.DevpThread; -import com.zy.asrs.wcs.rcs.thread.LedThread; -import com.zy.asrs.wcs.rcs.thread.ShuttleThread; +import com.zy.asrs.wcs.rcs.thread.*; import com.zy.asrs.wcs.system.entity.Dict; import com.zy.asrs.wcs.system.service.DictService; import lombok.extern.slf4j.Slf4j; @@ -91,6 +93,8 @@ private ShuttleChargeStaService shuttleChargeStaService; @Autowired private OpenUtils openUtils; + @Autowired + private LiftAction liftAction; /** * 缁勬墭 @@ -255,12 +259,165 @@ R result = openUtils.createInTask(createInTaskParam); News.info("鍒涘缓鍏ュ簱浠诲姟锛屼换鍔℃暟鎹�={}锛學MS鍝嶅簲={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject), JSON.toJSON(result)); + try{ + String msg = ""; + HashMap<String, String> hashMap = new HashMap<>(); + hashMap.put("msg", msg); + hashMap.put("sta", "31001"); + new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/led/getError") + .setJson(JSON.toJSONString(hashMap)) + .build() + .doPost(); + }catch (Exception e){ + + } + }else { + String msg = jsonObject.getString("msg"); + HashMap<String, String> hashMap = new HashMap<>(); + hashMap.put("msg", msg); + hashMap.put("sta", "31001"); + new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/led/getError") + .setJson(JSON.toJSONString(hashMap)) + .build() + .doPost(); News.error("鍏ュ簱鐢宠澶辫触锛屼换鍔℃暟鎹�={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject)); } } catch (Exception e) { e.printStackTrace(); } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 鍏ュ簱-鎵樼洏杩涘簱 + */ + public synchronized void palletInbound() { + try { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>() + .eq(Device::getDeviceType, DeviceCtgType.CONVEYOR.val()) + .eq(Device::getStatus, 1)); + for (Device devp : list) { + BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getDeviceId, devp.getId()).eq(BasConveyor::getHostId, devp.getHostId())); + // 閬嶅巻鍏ュ簱鍙� + for (StaDto inSta : JSON.parseArray(basConveyor.getInSta(), StaDto.class)) { + BasConveyorSta basConveyorSta = basConveyorStaService.selectBySiteNo(inSta.getDeviceStaNo().toString()); + if(basConveyorSta == null) { + continue; + } + + // 鑾峰彇鍏ュ簱绔欎俊鎭� + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, devp.getId().intValue()); + StaProtocol staProtocol = devpThread.getStation().get(inSta.getDeviceStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + int workNo = staProtocol.getWorkNo().intValue(); + + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() + && staProtocol.isLoading() + && staProtocol.isInEnable() + && (workNo >= 0) + && staProtocol.isPakMk() + ) { + Object object = redisUtil.get(DeviceRedisConstant.LIFT_PALLET_INBOUND + workNo); + if (object != null) { + continue; + } + + Task task = taskService.getOne(new LambdaQueryWrapper<Task>() + .eq(Task::getDestSite, inSta.getDeviceStaNo()) + .in(Task::getTaskSts, TaskStsType.NEW_INBOUND.sts) + .eq(Task::getTaskNo, workNo)); + if (task != null) { + int lev = Utils.getLev(task.getDestLoc()); + Integer targetSite = null; + if (lev == 1) { + targetSite = 31006; + }else if (lev == 2) { + targetSite = 31007; + }else if (lev == 3) { + targetSite = 31008; + } + if(targetSite == null) { + throw new CoolException(lev + "灞傜珯鐐逛俊鎭笉瀛樺湪"); + } + + StaProtocol staProtocol1 = devpThread.getStation().get(targetSite); + if (staProtocol1 == null) { + break; + } + if (!staProtocol1.isAutoing()) { + break; + } + if (staProtocol1.isLoading()) { + break; + } + if (staProtocol1.getWorkNo().intValue() != 0) { + break; + } + + LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, inSta.getLiftNo()); + if (liftThread == null) { + break; + } + + LiftProtocol liftProtocol = liftThread.getStatus(); + if (liftProtocol == null) { + break; + } + + if (!liftThread.isIdle()) { + break; + } + + if (motionService.count(new LambdaQueryWrapper<Motion>() + .eq(Motion::getDeviceCtg, DeviceCtgType.LIFT.val()) + .eq(Motion::getDevice, inSta.getLiftNo()) + .eq(Motion::getMotionSts, MotionStsType.EXECUTING.val())) > 0) { + break; + } + + //妫�娴嬫彁鍗囨満鏄惁鏈変换鍔$粦瀹� + boolean liftResult = Utils.checkLiftHasBinding(liftProtocol.getLiftNo(), String.valueOf(workNo)); + if (liftResult) { + //瀛樺湪浠诲姟锛岀姝㈡墽琛� + break; + } + + //姣忔鎵ц鎻愬崌鏈烘寚浠ら兘缁戝畾鎻愬崌鏈� + task.setLiftNo(liftProtocol.getLiftNo()); + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + break; + } + + List<LiftCommand> command = liftThread.getPalletInOutCommand(workNo, 1, lev, inSta.getDeviceStaNo(), targetSite, LiftCommandModeType.PALLET_INOUT); + + LiftAssignCommand assignCommand = new LiftAssignCommand(); + assignCommand.setLiftNo(liftProtocol.getLiftNo()); + assignCommand.setTaskNo(workNo); + assignCommand.setDeviceTaskNo(liftThread.generateDeviceTaskNo(workNo, MotionCtgType.LIFT_WITH_GOODS)); + assignCommand.setCommands(command); + liftAction.assignWork(liftThread.getDevice(), assignCommand); + + redisUtil.set(DeviceRedisConstant.LIFT_PALLET_INBOUND + workNo, "send", 60 * 60 * 6); + break; + } + } } } @@ -437,6 +594,7 @@ //灏嗗湴鍥炬暟鎹瓨鍏edis redisUtil.set(DeviceRedisConstant.MAP + lev, JSON.toJSONString(map)); + redisUtil.set(DeviceRedisConstant.BASE_MAP + lev, JSON.toJSONString(map)); } } catch (Exception e) { e.printStackTrace(); @@ -445,86 +603,176 @@ // 瑙f瀽鍏ュ簱宸ヤ綔妗� public synchronized void analyzeInBoundTask() { - for (Task task : taskService.selectWaitAnalyzeInBoundTask()) { - BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>().eq(BasConveyorSta::getSiteNo, task.getDestSite())); - if (basConveyorSta == null) { - continue; - } - BasConveyor basConveyor = basConveyorService.getById(basConveyorSta.getConveyorId()); - if (basConveyor == null) { - continue; - } -// DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId()); -// if (deviceBarcode == null) { -// continue; -// } -// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId())); -// if (barcodeThread == null) { -// continue; -// } -// if (!barcodeThread.getBarcode().equals(task.getZpallet())) { -// continue; -// } - if (Cools.isEmpty(basConveyorSta.getTaskNo())){ - continue; - } - if (!basConveyorSta.getTaskNo().toString().equals(task.getTaskNo())){ - continue; - } - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue()); - if (devpThread == null) { - continue; - } - StaProtocol staProtocol = devpThread.getStation().get(basConveyorSta.getSiteNo()); - if (staProtocol == null) { - continue; - } - if (!(staProtocol.isAutoing() - && staProtocol.isLoading() - && staProtocol.isInEnable())) { - continue; - } + try { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>() + .eq(Device::getDeviceType, DeviceCtgType.CONVEYOR.val()) + .eq(Device::getStatus, 1)); + for (Device devp : list) { + BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getDeviceId, devp.getId()).eq(BasConveyor::getHostId, devp.getHostId())); + // 閬嶅巻鍏ュ簱鍙� + for (StaDto inSta : JSON.parseArray(basConveyor.getDeviceInSta(), StaDto.class)) { + BasConveyorSta basConveyorSta = basConveyorStaService.selectBySiteNo(inSta.getStaNo().toString()); + if(basConveyorSta == null) { + continue; + } - //瑙f瀽鍓嶅垽鏂唴閮ㄧ洰鏍囧�兼槸鍚︽湁鐗� 鏈夊伐浣滃彿 - StaProtocol staProtocolInside = devpThread.getStation().get(Utils.getStaByLev(Utils.getLev(task.getDestLoc()))); - if (staProtocolInside == null) { - continue; - } - if (staProtocolInside.isLoading() || staProtocolInside.getWorkNo() !=0) { - continue; - } + // 鑾峰彇鍏ュ簱绔欎俊鎭� + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, devp.getId().intValue()); + StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + int workNo = staProtocol.getWorkNo().intValue(); - if (Cools.isEmpty(task.getShuttleNo())) { - //鍒嗛厤灏忚溅 - //鎼滅储绌洪棽杞� - ShuttleThread shuttleThread = shuttleDispatcher.searchIdleShuttle(task); - if (shuttleThread == null) { - News.info("{}浠诲姟鏈壘鍒扮┖闂茬┛姊溅", task.getTaskNo()); - continue; + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() + && staProtocol.isInEnable() + && (workNo >= 0) + && staProtocol.isPakMk() + ) { + + Task task = taskService.getOne(new LambdaQueryWrapper<Task>() + .in(Task::getTaskSts, TaskStsType.NEW_INBOUND.sts) + .eq(Task::getTaskNo, workNo)); + if (task != null) { + if (!Cools.isEmpty(task.getLiftNo())) { + if (task.getLiftNo() > 0) { + task.setLiftNo(0); + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + News.info("{}浠诲姟鏇存柊閲婃斁鎻愬崌鏈哄け璐�", task.getTaskNo()); + } + } + } + + if (Cools.isEmpty(task.getShuttleNo())) { + //鍒嗛厤灏忚溅 + //鎼滅储绌洪棽杞� + ShuttleThread shuttleThread = shuttleDispatcher.searchIdleShuttle(task); + if (shuttleThread == null) { + News.info("{}浠诲姟鏈壘鍒扮┖闂茬┛姊溅", task.getTaskNo()); + continue; + } + + task.setShuttleNo(Integer.valueOf(shuttleThread.getDevice().getDeviceNo()));//淇濆瓨绌挎杞﹀彿 + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo()); + } + continue; + } + + // generate motion list + List<Motion> motionList = analyzeService.generateMotion(task); + if (motionList.isEmpty()) { + task.setShuttleNo(null);//淇濆瓨绌挎杞﹀彿 + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo()); + } + continue; + } + motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId()); + + // 鏇存柊宸ヤ綔涓绘。 + task.setTaskSts(TaskStsType.ANALYZE_INBOUND.sts); // 宸ヤ綔鐘舵�� + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo()); + } + break; + } + + } } - - task.setShuttleNo(Integer.valueOf(shuttleThread.getDevice().getDeviceNo()));//淇濆瓨绌挎杞﹀彿 - task.setUpdateTime(new Date()); - if (!taskService.updateById(task)) { - News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo()); - } - continue; } - - // generate motion list - List<Motion> motionList = analyzeService.generateMotion(task); - if (motionList.isEmpty()) { - continue; - } - motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId()); - - // 鏇存柊宸ヤ綔涓绘。 - task.setTaskSts(TaskStsType.ANALYZE_INBOUND.sts); // 宸ヤ綔鐘舵�� - task.setUpdateTime(new Date()); - if (!taskService.updateById(task)) { - News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo()); - } + } catch (Exception e) { + e.printStackTrace(); } + +// for (Task task : taskService.selectWaitAnalyzeInBoundTask()) { +// BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>().eq(BasConveyorSta::getSiteNo, task.getDestSite())); +// if (basConveyorSta == null) { +// continue; +// } +// BasConveyor basConveyor = basConveyorService.getById(basConveyorSta.getConveyorId()); +// if (basConveyor == null) { +// continue; +// } +//// DeviceBarcode deviceBarcode = deviceBarcodeService.getById(basConveyorSta.getBarcodeId()); +//// if (deviceBarcode == null) { +//// continue; +//// } +//// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, Integer.parseInt(deviceBarcode.getDeviceId())); +//// if (barcodeThread == null) { +//// continue; +//// } +//// if (!barcodeThread.getBarcode().equals(task.getZpallet())) { +//// continue; +//// } +// if (Cools.isEmpty(basConveyorSta.getTaskNo())){ +// continue; +// } +// if (!basConveyorSta.getTaskNo().toString().equals(task.getTaskNo())){ +// continue; +// } +// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue()); +// if (devpThread == null) { +// continue; +// } +// StaProtocol staProtocol = devpThread.getStation().get(basConveyorSta.getSiteNo()); +// if (staProtocol == null) { +// continue; +// } +// if (!(staProtocol.isAutoing() +// && staProtocol.isLoading() +// && staProtocol.isInEnable())) { +// continue; +// } +// +// //瑙f瀽鍓嶅垽鏂唴閮ㄧ洰鏍囧�兼槸鍚︽湁鐗� 鏈夊伐浣滃彿 +// 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())) { +// //鍒嗛厤灏忚溅 +// //鎼滅储绌洪棽杞� +// ShuttleThread shuttleThread = shuttleDispatcher.searchIdleShuttle(task); +// if (shuttleThread == null) { +// News.info("{}浠诲姟鏈壘鍒扮┖闂茬┛姊溅", task.getTaskNo()); +// continue; +// } +// +// task.setShuttleNo(Integer.valueOf(shuttleThread.getDevice().getDeviceNo()));//淇濆瓨绌挎杞﹀彿 +// task.setUpdateTime(new Date()); +// if (!taskService.updateById(task)) { +// News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo()); +// } +// continue; +// } +// +// // generate motion list +// List<Motion> motionList = analyzeService.generateMotion(task); +// if (motionList.isEmpty()) { +// continue; +// } +// motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId()); +// +// // 鏇存柊宸ヤ綔涓绘。 +// task.setTaskSts(TaskStsType.ANALYZE_INBOUND.sts); // 宸ヤ綔鐘舵�� +// task.setUpdateTime(new Date()); +// if (!taskService.updateById(task)) { +// News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo()); +// } +// } } /** @@ -591,6 +839,11 @@ // generate motion list List<Motion> motionList = analyzeService.generateMotion(task); if (Cools.isEmpty(motionList)) { + task.setShuttleNo(null);//淇濆瓨绌挎杞﹀彿 + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo()); + } log.error("鍑哄簱 ===>> 鏆傛椂娌℃湁绌洪棽灏忚溅, 浠诲姟鍙�={}", task.getTaskNo()); continue; } @@ -630,6 +883,11 @@ // generate motion list List<Motion> motionList = analyzeService.generateShuttleMoveMotion(task); if (motionList.isEmpty()) { + task.setShuttleNo(null);//淇濆瓨绌挎杞﹀彿 + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo()); + } continue; } motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId()); @@ -905,7 +1163,8 @@ .eq(BasLed::getDeviceId, ledDevice.getId())); List<Integer> staArr = JSON.parseArray(led.getSta(), Integer.class); - BasConveyor basConveyor = basConveyorService.getById(led.getConveyorId().intValue()); + BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>() + .eq(BasConveyor::getDeviceId, led.getConveyorId().intValue())); if (basConveyor == null) { continue; } @@ -919,26 +1178,26 @@ for (Integer staNo : staArr) { // 鑾峰彇鍙夎溅绔欑偣 StaProtocol staProtocol = devpThread.getStation().get(staNo); - if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || !staProtocol.isLoading()) { + if (null == staProtocol || null == staProtocol.getWorkNo()) { continue; } else { staProtocol = staProtocol.clone(); } - // 鑾峰彇宸ヤ綔妗f暟鎹� - Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskNo, staProtocol.getWorkNo())); - if (null == task) { - continue; - } + String taskNo = "0"; + if (staProtocol.isOutEnable() && staProtocol.getSiteId() == 31001 ){ + if (0 != staProtocol.getWorkNo()){ + Motion motion = motionService.getOne(new LambdaQueryWrapper<Motion>().eq(Motion::getMotionCtg, 9).eq(Motion::getTemp, staProtocol.getWorkNo())); + // 鑾峰彇宸ヤ綔妗f暟鎹� + Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskNo, motion.getTaskNo())); + if (null == task) { + continue; + } + taskNo = task.getWmsTaskNo(); + } - tasks.add(task); - // 缁勮鍛戒护 - LedCommand ledCommand = new LedCommand(); - ledCommand.setWorkNo(task.getTaskNo()); - ledCommand.setIoType(task.getTaskCtg().intValue()); - ledCommand.setTitle(task.getTaskCtg$()); - ledCommand.setSourceLocNo(task.getOriginLoc()); - ledCommand.setLocNo(task.getDestLoc()); - ledCommand.setStaNo(Integer.parseInt(task.getDestSite())); + } else if (staProtocol.isInEnable() && staProtocol.getSiteId() == 31002) { + taskNo = staProtocol.getStaNo().toString(); + } try { //鑾峰彇WMS鍦板潃 @@ -947,32 +1206,24 @@ String wmsUrl = dict.getValue(); HashMap<String, Object> param = new HashMap<>(); - param.put("taskNo", task.getTaskNo()); + param.put("taskNo", taskNo); + param.put("sta",staNo); String response = new HttpHandler.Builder() .setUri(wmsUrl) - .setPath("/queryTask") + .setPath("/rpc/led/getTask") .setJson(JSON.toJSONString(param)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); Integer code = jsonObject.getInteger("code"); if (code.equals(200)) { - List<MatDto> matDtos = JSON.parseArray(jsonObject.getString("data"), MatDto.class); - ledCommand.setMatDtos(matDtos); + } } } catch (Exception e) { e.printStackTrace(); } - commands.add(ledCommand); - } - // 鑾峰彇LED绾跨▼ - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, ledDevice.getId().intValue()); - // 鍛戒护涓嬪彂 ------------------------------------------------------------------------------- - if (!commands.isEmpty()) { - ledThread.write(commands); - ledThread.setLedMk(false); } } } @@ -1054,4 +1305,39 @@ } } + // 瑙f瀽灏忚溅杞借揣绉诲姩宸ヤ綔妗� + public synchronized void analyzeLadenMoveTask() { + for (Task task : taskService.selectWaitAnalyzeLadenMoveTask()) { + if (Cools.isEmpty(task.getShuttleNo())) { + //鍒嗛厤灏忚溅 + //鎼滅储绌洪棽杞� + ShuttleThread shuttleThread = shuttleDispatcher.searchIdleShuttle(task); + if (shuttleThread == null) { + News.info("{}浠诲姟鏈壘鍒扮┖闂茬┛姊溅", task.getTaskNo()); + continue; + } + + task.setShuttleNo(Integer.valueOf(shuttleThread.getDevice().getDeviceNo()));//淇濆瓨绌挎杞﹀彿 + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo()); + } + continue; + } + + // generate motion list + List<Motion> motionList = analyzeService.generateShuttleLadenMoveMotion(task); + if (motionList.isEmpty()) { + continue; + } + motionService.batchInsert(motionList, task.getUuid(), Integer.valueOf(task.getTaskNo()), task.getHostId()); + + // 鏇存柊宸ヤ綔涓绘。 + task.setTaskSts(TaskStsType.ANALYZE_LADEN_MOVE.sts); // 宸ヤ綔鐘舵�� + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", task.getTaskNo()); + } + } + } } -- Gitblit v1.9.1