From 5074c51d978a490a1d0e9dc116a874d33ddeb16c Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 04 六月 2025 13:22:03 +0800 Subject: [PATCH] DO单excel导入功能 任务工作档优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 77 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 77 insertions(+), 0 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java index 13b453f..57813fb 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java @@ -2,17 +2,24 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.api.utils.LocUtils; +import com.vincent.rsf.server.manager.controller.params.LocToTaskParams; +import com.vincent.rsf.server.manager.enums.LocStsType; import com.vincent.rsf.server.manager.enums.TaskStsType; import com.vincent.rsf.server.manager.entity.*; +import com.vincent.rsf.server.manager.enums.TaskType; import com.vincent.rsf.server.manager.service.*; +import com.vincent.rsf.server.manager.service.impl.LocServiceImpl; import com.vincent.rsf.server.system.constant.GlobalConfigCode; import com.vincent.rsf.server.system.entity.Config; import com.vincent.rsf.server.system.service.ConfigService; import com.vincent.rsf.server.system.utils.SystemAuthUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -39,6 +46,13 @@ private TaskItemLogService taskItemLogService; @Autowired private ConfigService configService; + @Autowired + private LocServiceImpl locService; + + @Value("${wcs-slave.doubleLocs}") + private List<Integer> rows; + @Autowired + private LocItemService locItemService; /** * @param @@ -78,6 +92,69 @@ } /** + * 浠诲姟鑷姩涓嬪彂 + * @throws Exception + */ + @Scheduled(cron = "0/5 * * * * ? ") + @Transactional(rollbackFor = Exception.class) + public void taskToWCS() throws Exception { + Long loginUserId = SystemAuthUtils.getLoginUserId(); + List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_IN.type, TaskType.TASK_TYPE_OUT.type); + List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getTaskType, list).orderByDesc(Task::getSort)); + for (Task task : tasks) { + Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, task.getBarcode())); + if (Objects.isNull(loc)) { + continue; + } + //鍒ゆ柇鏄惁娣卞簱浣� + if (!LocUtils.isShallowLoc(loc.getCode())) { + //鑾峰彇娣卞簱浣嶅搴旂殑娴呭簱浣� + String shallowLoc = LocUtils.getShallowLoc(loc.getCode()); + if (StringUtils.isBlank(shallowLoc)) { + continue; + } + Loc shalloc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc)); + if (Objects.isNull(shalloc) || !shalloc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) { + //濡傛灉娴呭簱浣嶄笉鍦ㄥ簱璺冲嚭寰幆 + continue; + } + LocToTaskParams params = new LocToTaskParams(); + params.setOrgLoc(shallowLoc).setType(TaskType.TASK_TYPE_LOC_MOVE.type + ""); + //鐢熸垚绉诲簱浠诲姟 + Task moveTask = locItemService.genMoveTask(params, loginUserId); + moveTask.setSort(task.getSort() + 1); + if (!taskService.updateById(moveTask)) { + throw new Exception("浠诲姟浼樺厛绾ф洿鏂板け璐ワ紒锛�"); + } + } + //TODO 璋冪敤涓嬪彂浠诲姟鎺ュ彛 + } + } + + /** + * 姣忎簲绉掓牎楠屾繁搴撲綅鏄惁涓虹┖锛屽鏋滄祬搴撲綅鏈夎揣锛屽皢娴呭簱浣嶇Щ鑷虫繁搴撲綅 + */ + @Scheduled(cron = "0/35 * * * * ? ") + @Transactional(rollbackFor = Exception.class) + public void shallocToDeep() throws Exception { + List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>() + .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type) + .in(Loc::getRow, rows)); + if (locs.isEmpty()) { + return; + } + for (Loc loc : locs) { + String shallowLoc = LocUtils.getShallowLoc(loc.getCode()); + Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc)); + if (Objects.isNull(one) || !one.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) { + continue; + } + taskService.moveToDeep(SystemAuthUtils.getLoginUserId(), shallowLoc); + } + } + + + /** * @param * @return * @author Ryan -- Gitblit v1.9.1