From ceab656e93edafbdaa0d908a2f723336af811b5a Mon Sep 17 00:00:00 2001 From: skyouc <958836976@qq.com> Date: 星期三, 03 九月 2025 12:47:23 +0800 Subject: [PATCH] 站点任务功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 36 +++++++++++++++++++++++++++--------- 1 files changed, 27 insertions(+), 9 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java index 613f2bb..6d24142 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java @@ -45,6 +45,7 @@ import java.util.List; import java.util.Objects; +import java.util.Random; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -415,6 +416,7 @@ ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1); scheduled.scheduleWithFixedDelay(new Runnable() { int current = 1; + @Override public void run() { params.setCurrent(current); @@ -422,8 +424,13 @@ if (dtos.isEmpty()) { scheduled.shutdown(); } - dtos.forEach(dto -> { + for (SyncLocsDto dto : dtos) { Loc loc = new Loc(); + String string = new Random().nextInt(10000000) + ""; + Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, string)); + if (!Objects.isNull(one)) { + string = new Random().nextInt(10000000) + ""; + } loc.setCode(dto.getLocNo()) .setBarcode(dto.getBarcode()) .setRow(dto.getRow()) @@ -431,6 +438,7 @@ .setId(null) .setAreaId(41L) .setWarehouseId(27L) + .setBarcode(string) .setCol(dto.getBay()) .setType(dto.getLocType()) .setStatus(dto.getStatusBool()) @@ -439,7 +447,7 @@ scheduled.shutdown(); throw new CoolException("WCS搴撲綅鍚屾澶辫触锛侊紒"); } - }); + } current++; } }, 1, 1, TimeUnit.SECONDS); @@ -448,6 +456,7 @@ /** * 寮傚父淇℃伅涓婃姤 + * * @return */ @Override @@ -458,9 +467,9 @@ Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, params.getSeqNum())); if (Objects.isNull(task)) { - throw new CoolException("浠诲姟涓嶅瓨鍦紒锛�"); + throw new CoolException("浠诲姟涓嶅瓨鍦ㄥ彲宸茬粨鏉燂紒锛�"); } - + if (params.getEventType().equals("END")) { if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type) @@ -471,6 +480,12 @@ if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()) .set(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id))) { throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�"); + } + + if (!basStationService.update(new LambdaUpdateWrapper<BasStation>() + .eq(BasStation::getStationName, task.getOrgSite()) + .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type))) { + throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�"); } } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type) || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type) @@ -490,6 +505,7 @@ /** * 涓嬪彂浠诲姟鑷充腑杞珹PI + * * @param params * @return */ @@ -552,7 +568,7 @@ } } - private InTaskMsgDto getLocNoCrn(String orgLoc, DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) { + private InTaskMsgDto getLocNoCrn(String orgLoc, DeviceBind deviceBind, Long area, String sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) { if (Cools.isEmpty(matnr)) { //鐗╂枡鍙� matnr = ""; } @@ -641,7 +657,7 @@ if (Cools.isEmpty(deviceSite)) { channel = 0; } else { - inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite())); + inTaskMsgDto.setStaNo(deviceSite.getDeviceSite()); } //鏇存柊褰撳墠鎺� @@ -805,7 +821,7 @@ return inTaskMsgDto; } - private InTaskMsgDto getLocNoCtu(DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) { + private InTaskMsgDto getLocNoCtu(DeviceBind deviceBind, Long area, String sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) { if (Cools.isEmpty(matnr)) { //鐗╂枡鍙� matnr = ""; } @@ -819,6 +835,8 @@ .eq(Loc::getAreaId, area) .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type) .eq(Loc::getType, locTypeDto.getLocType1()) + .ge(Loc::getRow, deviceBind.getStartRow()) + .le(Loc::getRow, deviceBind.getEndRow()) .orderByAsc(Loc::getLev) .orderByAsc(Loc::getCol) .orderByAsc(Loc::getRow) @@ -834,13 +852,13 @@ DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>() .eq(DeviceSite::getType, ioType) .eq(DeviceSite::getSite, sourceStaNo) - .eq(DeviceSite::getDeviceCode, loc.getDeviceNo()) + .eq(!Objects.isNull(loc.getDeviceNo()), DeviceSite::getDeviceCode, loc.getDeviceNo()) ); if (Cools.isEmpty(deviceSite)) { deviceNo = 0; loc = null; } else { - inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite())); + inTaskMsgDto.setStaNo(deviceSite.getDeviceSite()); } // 閫掑綊鏌ヨ if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { -- Gitblit v1.9.1