From 1e1cedc70758a7c17ccf63ea11d1db70c409aa66 Mon Sep 17 00:00:00 2001 From: skyouc <958836976@qq.com> Date: 星期五, 05 九月 2025 09:45:15 +0800 Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop --- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java | 75 ++++++++++++++++++++++++++++++++----- 1 files changed, 64 insertions(+), 11 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 f765964..3005f19 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 @@ -18,6 +18,7 @@ import com.vincent.rsf.server.api.entity.dto.LocTypeDto; import com.vincent.rsf.server.api.controller.erp.params.TaskInParam; import com.vincent.rsf.server.api.entity.dto.SyncLocsDto; +import com.vincent.rsf.server.api.entity.enums.CallBackEvent; import com.vincent.rsf.server.api.entity.params.CommonRequest; import com.vincent.rsf.server.api.entity.params.ExMsgParams; import com.vincent.rsf.server.api.entity.params.WcsTaskParams; @@ -45,6 +46,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 +417,7 @@ ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1); scheduled.scheduleWithFixedDelay(new Runnable() { int current = 1; + @Override public void run() { params.setCurrent(current); @@ -422,8 +425,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 +439,7 @@ .setId(null) .setAreaId(41L) .setWarehouseId(27L) + .setBarcode(string) .setCol(dto.getBay()) .setType(dto.getLocType()) .setStatus(dto.getStatusBool()) @@ -439,7 +448,7 @@ scheduled.shutdown(); throw new CoolException("WCS搴撲綅鍚屾澶辫触锛侊紒"); } - }); + } current++; } }, 1, 1, TimeUnit.SECONDS); @@ -448,6 +457,7 @@ /** * 寮傚父淇℃伅涓婃姤 + * * @return */ @Override @@ -455,20 +465,60 @@ 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("浠诲姟涓嶅瓨鍦紒锛�"); + throw new CoolException("浠诲姟涓嶅瓨鍦ㄥ彲宸茬粨鏉燂紒锛�"); } - - if (params.getEventType().equals("END")) { + + /**鏂欑鎼繍涓紝 淇敼绔欑偣鐘舵��*/ + if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_OBIT.event)) { 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()) + if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) { + BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite())); + if (Objects.isNull(station)) { + throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪锛侊紒"); + } + if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { + station.setUseStatus(LocStsType.LOC_STS_TYPE_O.type); + if (!basStationService.updateById(station)) { + 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)) { + /**淇敼鍑哄簱绔欑偣鐘舵��*/ + BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>() + .eq(BasStation::getStationName, task.getTargSite())); + if (Objects.isNull(station)) { + throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪锛侊紒"); + } + if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { + station.setUseStatus(LocStsType.LOC_STS_TYPE_F.type); + if (!basStationService.updateById(station)) { + throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�"); + } + } + } + /**鍙栫瀹屾垚锛� 淇敼浠诲姟鐘舵��*/ + } else if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_END.event)) { + 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>() + .lt(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id) + .eq(Task::getTaskCode, task.getTaskCode()) .set(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id))) { throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�"); } @@ -478,18 +528,19 @@ || 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()) + .lt(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id) .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 */ @@ -641,7 +692,7 @@ if (Cools.isEmpty(deviceSite)) { channel = 0; } else { - inTaskMsgDto.setStaNo(Integer.parseInt(deviceSite.getDeviceSite())); + inTaskMsgDto.setStaNo(deviceSite.getDeviceSite()); } //鏇存柊褰撳墠鎺� @@ -819,6 +870,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 +887,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