From ffc4d0526bf02e7e00a7872d05a1e67e520e59d6 Mon Sep 17 00:00:00 2001 From: yangyang Date: 星期一, 02 六月 2025 12:06:40 +0800 Subject: [PATCH] 新增自动盘点功能 --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java | 102 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 95 insertions(+), 7 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java index b86c0bd..e962018 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java @@ -15,10 +15,13 @@ import com.zy.asrs.wms.apis.wcs.entity.request.TaskDescribe; import com.zy.asrs.wms.apis.wcs.entity.request.TaskParam; import com.zy.asrs.wms.apis.wcs.entity.response.CommonReponse; -import com.zy.asrs.wms.asrs.entity.Task; +import com.zy.asrs.wms.asrs.entity.*; +import com.zy.asrs.wms.asrs.entity.dto.OrderOutMergeDto; +import com.zy.asrs.wms.asrs.entity.enums.LocStsType; import com.zy.asrs.wms.asrs.entity.enums.TaskStsType; -import com.zy.asrs.wms.asrs.service.TaskService; -import com.zy.asrs.wms.asrs.service.WorkService; +import com.zy.asrs.wms.asrs.service.*; +import com.zy.asrs.wms.asrs.service.impl.LocServiceImpl; +import com.zy.asrs.wms.utils.Utils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; @@ -49,9 +52,22 @@ private RestTemplate restTemplate; @Autowired private WorkService workService; - @Resource private SystemProperties properties; + @Autowired + private LocServiceImpl locService; + @Autowired + private LocDetlService locDetlService; + @Autowired + private TaskDetlService taskDetlService; + @Autowired + private LocDetlFieldService locDetlFieldService; + @Autowired + private TaskDetlFieldService taskDetlFieldService; + @Autowired + private CacheSiteService cacheSiteService; + @Autowired + private OperationPortService operationPortService; /*** * 鍏ュ簱浠诲姟---閫氱煡ESS杈撻�佺嚎娴佸姩 @@ -98,6 +114,78 @@ } }); + } + + /** + * 鐢熸垚鑷姩鐩樼偣浠诲姟 + */ + @Scheduled(cron = "0/50 * * * * ?") + @Transactional(rollbackFor = Exception.class) + public void genCheckTask() { + Loc locs = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocStsId, LocStsType.F.val()).orderByAsc(Loc::getLocNo).last("limit 1")); + if (Objects.isNull(locs)) { + return; + } + List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().select(Task::getId).eq(Task::getTaskType, 107L)); + if (!tasks.isEmpty() && tasks.size() >= 4) { + //榛樿鐢熸垚鍥涗釜鐩樼偣浠诲姟锛岃秴杩�4涓紝鍋滄鐢熸垚鐩樼偣浠诲姟; + return; + } + OperationPort operationPort = operationPortService.getOne(new LambdaQueryWrapper<OperationPort>().last("ORDER BY RAND() LIMIT 1;")); + if (operationPort == null || Objects.isNull(operationPort)) { + throw new CoolException("浣滀笟鍙d笉瀛樺湪"); + } + Task task = new Task(); + task.setTaskNo(workService.generateTaskNo(TaskStsType.GENERATE_OUT.id)); + task.setTaskSts(TaskStsType.GENERATE_OUT.id); + task.setTaskType(107L); //榛樿107鐩樼偣浠诲姟锛岀洏鐐逛换鍔℃病鏈夛紝鎸�103澶勭悊 + task.setIoPri(workService.generateIoPri(TaskStsType.GENERATE_OUT.id)); + task.setOriginLoc(locs.getLocNo()); + task.setTargetSite(operationPort.getFlag()); + task.setBarcode(locs.getBarcode()); + + if (!taskService.save(task)) { + throw new CoolException("浠诲姟鐢熸垚澶辫触锛侊紒"); + } + + List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocId, locs.getId())); + if (locDetls.isEmpty()) { + throw new CoolException("鏄庣粏涓嶅瓨鍦紒锛�"); + } + + for (LocDetl locDetl : locDetls) { + TaskDetl taskDetl = new TaskDetl(); + taskDetl.sync(locDetl); + taskDetl.setId(null); + taskDetl.setTaskId(task.getId()); + taskDetl.setTaskNo(task.getTaskNo()); + taskDetl.setAnfme(locDetl.getAnfme()); + taskDetl.setStock(locDetl.getAnfme()); + taskDetl.setWaveId(null); + taskDetl.setWaveNo(null); + taskDetl.setOrderId(null); + taskDetl.setOrderNo(null); + if (!taskDetlService.save(taskDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } + + List<LocDetlField> locDetlFields = locDetlFieldService.list(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locDetl.getId())); + for (LocDetlField locDetlField : locDetlFields) { + TaskDetlField taskDetlField = new TaskDetlField(); + taskDetlField.sync(locDetlField); + taskDetlField.setId(null); + taskDetlField.setDetlId(taskDetl.getId()); + if (!taskDetlFieldService.save(taskDetlField)) { + throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触"); + } + } + } + + if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getId, locs.getId()) + .set(Loc::getUpdateTime, new Date()) + .set(Loc::getLocStsId, LocStsType.R.val()))) { + throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒锛�"); + } } @@ -211,7 +299,7 @@ // } else { // CommonReponse commonReponse = JSON.toJavaObject(JSON.parseObject(exchange.getBody()), CommonReponse.class); // if (commonReponse.getCode() == 0) { - //娴佸姩閫氱煡涓嬪彂瀹屾垚鍚庯紝淇敼浠诲姟鐘舵�佷负杈撻�佺嚎娴佸姩涓�傘�� + //娴佸姩閫氱煡涓嬪彂瀹屾垚鍚庯紝淇敼浠诲姟鐘舵�佷负杈撻�佺嚎娴佸姩涓�傘�� // taskService.update(new LambdaUpdateWrapper<Task>() // .eq(Task::getId, task.getId()) // .set(Task::getTaskSts, TaskStsType.COMPLETE_OUT.id)); @@ -244,8 +332,8 @@ public void waveToTask() throws JsonProcessingException { //鑾峰彇褰撳墠浠诲姟妗d腑锛屾墍鏈変负寰呭嚭搴撶姸鎬佺殑浠诲姟妗o紝鎸夋椂闂村崌搴忔帓鍒� List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() - .ge(Task::getTaskType, 101) //TODO 濡備綍纭鏄�101锛岃繕鏄�103 - .eq(Task::getTaskSts, TaskStsType.GENERATE_OUT.id)); + .ge(Task::getTaskType, 101) //TODO 濡備綍纭鏄�101锛岃繕鏄�103 + .eq(Task::getTaskSts, TaskStsType.GENERATE_OUT.id)); if (tasks.isEmpty()) { return; } -- Gitblit v1.9.1