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 | 62 +++++++++++++++++++++++++++---- 1 files changed, 54 insertions(+), 8 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 27b6502..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 @@ -455,13 +464,48 @@ if (Objects.isNull(params)) { return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - + + Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, params.getSeqNum())); + if (Objects.isNull(task)) { + 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) + || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type) + || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type) + || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type) + || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { + 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) + || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type) + || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) + || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)) { + if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode()) + .set(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id))) { + throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�"); + } + } + } + log.info(JSONObject.toJSONString(params)); return R.ok(JSONObject.toJSONString(params)); } /** * 涓嬪彂浠诲姟鑷充腑杞珹PI + * * @param params * @return */ @@ -524,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 = ""; } @@ -613,7 +657,7 @@ if (Cools.isEmpty(deviceSite)) { channel = 0; } else { - inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite())); + inTaskMsgDto.setStaNo(deviceSite.getDeviceSite()); } //鏇存柊褰撳墠鎺� @@ -777,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 = ""; } @@ -791,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) @@ -806,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