From c41f915262427a9469880ae1a7f71c50f1992a63 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 01 九月 2025 15:17:14 +0800 Subject: [PATCH] 添加盘点跑库功能 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java | 90 ++++++++++++++++++++++++++++++++++++++------ 1 files changed, 77 insertions(+), 13 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java index 2728d00..675d76c 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java @@ -1,6 +1,7 @@ package com.vincent.rsf.server.manager.schedules; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.exception.CoolException; @@ -11,6 +12,7 @@ import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.*; import com.vincent.rsf.server.manager.service.*; +import com.vincent.rsf.server.manager.service.impl.DeviceSiteServiceImpl; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.service.ConfigService; import com.vincent.rsf.server.system.utils.SerialRuleUtils; @@ -18,7 +20,9 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -33,25 +37,87 @@ @Autowired private LocService locService; - @Autowired private ConfigService configService; - @Autowired private BasStationService stationService; - @Autowired private TaskService taskService; - - @Autowired private TaskItemService taskItemService; - @Autowired private MatnrService matnrService; - @Autowired private LocItemService locItemService; + @Autowired + private DeviceSiteService deviceSiteService; + + /** + * @author Ryan + * @date 2025/9/1 + * @description: 鑷姩鐢熸垚鐩樼偣璺戝簱鍗� + * @version 1.0 + */ + public void autoCheckOrders() { + List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type).last("limit 1")); + locs.forEach(loc -> { + List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId())); + if (!locItems.isEmpty()) { + DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>().eq(DeviceSite::getType, TaskType.TASK_TYPE_CHECK_OUT.type), false); + //鐢熸垚鐩樼偣浠诲姟鍙傛暟 + LocToTaskParams locToTaskParams = new LocToTaskParams(); + locToTaskParams.setType(Constants.TASK_TYPE_OUT_CHECK) + .setItems(locItems) + .setSiteNo(deviceSite.getSite()) + .setOrgLoc(loc.getCode()); + try { + locItemService.generateTask(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val, locToTaskParams, getLoginUserId()); + } catch (Exception e) { + throw new CoolException(e.getMessage()); + } + } + }); + } + + /** + * @author Ryan + * @date 2025/9/1 + * @description: 鑷姩瀹屾垚鐩樼偣鍔熻兘 + * @version 1.0 + */ + public void autoCheckComplete() { + //鑾峰彇浠诲姟鍒楄〃涓紝涓虹洏鐐瑰嚭搴撶殑浠诲姟 + List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() + .in(Task::getTaskType, Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_CHECK_IN.type))); + if (!tasks.isEmpty()) { + tasks.forEach(task -> { + if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) { + if (task.getTaskStatus().equals(TaskStsType.GENERATE_IN.id)) { + task.setTaskStatus(TaskStsType.COMPLETE_IN.id); + if (!taskService.updateById(task)) { + throw new CoolException("鐩樼偣鍐嶅叆搴撲换鍔″畬鎴愬け璐ワ紒锛�"); + } + } + } else { + //鍒涘缓鍑哄簱浠诲姟鐘舵�� + if (task.getTaskStatus().equals(TaskStsType.GENERATE_OUT.id)) { + task.setTaskStatus(TaskStsType.COMPLETE_OUT.id); + if (!taskService.updateById(task)) { + throw new CoolException("鐩樼偣鍑哄簱浠诲姟瀹屾垚澶辫触锛侊紒"); + } + //鍑哄簱宸插畬鎴愶紝绛夊緟鐩樼偣涓� + } else if (task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) { + try { + taskService.pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_CHECK); + } catch (Exception e) { + throw new CoolException(e.getMessage()); + } + } + } + }); + } + } + public void genRun() { String autoRunArea = configService.getVal("AUTO_RUN_AREA", String.class); @@ -79,14 +145,14 @@ break; } } - } - private void autoRun(List<Integer> locGroupList, List<String> staGroupList) { - List<String> staPreNos = getStaPrefixes(staGroupList); String staTaskMemo = "DEMO_STA_" + String.join("-", staPreNos); + log.error("=========>"); + log.info(staTaskMemo); + System.out.println(staTaskMemo); List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getMemo, staTaskMemo)); if (!Cools.isEmpty(list) && list.size() > 30) { @@ -94,19 +160,17 @@ } // 鍏ュ簱 搴旇鏍规嵁宸ヤ綔妗e洖鍘� this.runStaToLoc(locGroupList, staGroupList, staTaskMemo); + // 鍑哄簱,闇�瑕佹牎楠屽伐浣滄。鏄惁瀛樺湪锛屽瓨鍦ㄥ氨璇存槑绔欑偣澶勪簬蹇欑鐘舵�� this.runLocToSta(locGroupList, staGroupList, staTaskMemo); - // 绉诲簱 this.runLocToLoc(locGroupList, staTaskMemo); } - // 鍏ュ簱 private void runStaToLoc(List<Integer> locGroupList, List<String> staGroupList, String memo) { Integer startRow = Collections.min(locGroupList); Integer endRow = Collections.max(locGroupList); - // STA IDLE LambdaQueryWrapper<BasStation> idleWrapper = new LambdaQueryWrapper<BasStation>().eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_F.type).in(BasStation::getStationName, staGroupList); -- Gitblit v1.9.1