From 48278d6051b6e58d648178964585d35ae000ec91 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期五, 30 八月 2024 15:36:56 +0800 Subject: [PATCH] # --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java | 184 ++++++++++++++++++++------------------------- 1 files changed, 81 insertions(+), 103 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java index b84d50a..2ae0958 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java @@ -1,19 +1,23 @@ package com.zy.asrs.wms.asrs.manage; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.framework.exception.CoolException; -import com.zy.asrs.wms.asrs.controller.req.OutReq; +import com.zy.asrs.wms.asrs.entity.dto.OutDetlDto; +import com.zy.asrs.wms.asrs.entity.dto.OutLocDto; +import com.zy.asrs.wms.asrs.entity.enums.LocStsType; +import com.zy.asrs.wms.asrs.entity.param.OutParam; import com.zy.asrs.wms.asrs.entity.*; -import com.zy.asrs.wms.asrs.entity.param.FieldParam; import com.zy.asrs.wms.asrs.service.*; +import com.zy.asrs.wms.utils.OutUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; /** * 鍑哄簱绠$悊 @@ -25,124 +29,98 @@ @Autowired private TaskService taskService; - - @Autowired private TaskDetlService taskDetlService; - + @Autowired + private TaskDetlFieldService taskDetlFieldService; @Autowired private LocService locService; - - @Autowired private LocDetlService locDetlService; - - + @Autowired + private LocDetlFieldService locDetlFieldService; @Autowired private WorkService workService; - - @Autowired private OrderService orderService; - @Autowired private OrderDetlService orderDetlService; + @Autowired + private OutUtils outUtils; - - /** - * 鑾峰彇搴撳瓨 - * - * @param map - */ - public List<LocDetl> listSuitableMat(Map<String, Object> map) { - List<FieldParam> param = new ArrayList<>(); - map.entrySet().stream().filter(entry -> entry.getValue() != null).forEach(entry -> { - FieldParam fieldParam = new FieldParam(); - fieldParam.setName(entry.getKey()); - fieldParam.setValue(entry.getValue()); - param.add(fieldParam); - }); - //TODO 杩欓噷鍔犱笂鍑哄簱瑙勫垯 - - List<LocDetl> stock = locDetlService.listSuitableMat(param, null); - return stock; - } - - /** - * 鏍规嵁璁㈠崟id鑾峰彇搴撳瓨 - * - * @param orderId 璁㈠崟ID - */ - public List<LocDetl> listSuitableMatByOrder(Long orderId) { - Order order = orderService.getById(orderId); - List<OrderDetl> orderDetls = orderDetlService.getOrderDetlByOrderId(orderId); - //TODO 杩欓噷鍔犱笂鍑哄簱瑙勫垯 - for (OrderDetl orderDetl : orderDetls) { - - } - List<FieldParam> param = new ArrayList<>(); - - - List<LocDetl> stock = locDetlService.listSuitableMat(param, null); - return stock; - } - - /** - * 鏍规嵁璁㈠崟id鑾峰彇搴撳瓨 - * - * @param waveId 璁㈠崟ID - */ - public List<LocDetl> listSuitableMatByWave(Long waveId) { - - List<FieldParam> param = new ArrayList<>(); - - - List<LocDetl> stock = locDetlService.listSuitableMat(param, null); - return stock; - } /** * 鍑哄簱 - * - * @param outReq */ - public void out(OutReq outReq) { - Map<Long, List<OutReq.Detl>> map = outReq.getDetls().stream().collect(Collectors.groupingBy(OutReq.Detl::getLocDetlId)); - map.forEach((k, v) -> { - Loc loc = locService.getById(k); - processTask(loc, v, outReq.getTargetSite()); - }); + @Transactional + public void out(OutParam outParam) { + if (outParam.getOperationPort() == null) { + throw new CoolException("浣滀笟鍙d笉瀛樺湪"); + } + + List<OutLocDto> list = outUtils.merge(outParam); + processTask(list); } + private void processTask(List<OutLocDto> list) { + for (OutLocDto locDto : list) { + long taskType = locDto.getAll() ? 101L : 103L; - private void processTask(Loc loc, List<OutReq.Detl> detls, String targetSite) { - // 淇濆瓨宸ヤ綔妗� - Task task = new Task(); - task.setTaskNo(workService.generateTaskNo(1L)); - // 浠诲姟鐘舵�� - task.setTaskSts(101L); - // 浠诲姟绫诲瀷 - task.setTaskType(101L); - // 浼樺厛绾� - task.setIoPri(1); - // 婧愬簱浣� - task.setOriginLoc(loc.getLocNo()); - // 鐩爣绔欑偣 - task.setTargetSite(targetSite); - // 鎵樼洏鐮� - task.setBarcode(loc.getBarcode()); - boolean res = taskService.save(task); - if (!res) { - throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); - } - // 宸ヤ綔妗f槑缁嗕繚瀛� - for (OutReq.Detl detl : detls) { - LocDetl locDetl = locDetlService.getById(detl.getLocDetlId()); - TaskDetl taskDetl = new TaskDetl(); - taskDetl.sync(locDetl); - taskDetl.setTaskId(task.getId()); - if (!taskDetlService.save(taskDetl)) { - throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + Loc loc = locService.getById(locDto.getLocId()); + if(loc == null) { + throw new CoolException("搴撲綅涓嶅瓨鍦�"); + } + + if (!loc.getLocStsId().equals(LocStsType.F.val())) { + throw new CoolException("搴撲綅鐘舵�佷笉鍦ㄥ簱"); + } + + Task task = new Task(); + task.setTaskNo(workService.generateTaskNo(1L)); + task.setTaskSts(101L); + task.setTaskType(taskType); + task.setIoPri(workService.generateIoPri(taskType)); + task.setOriginLoc(loc.getLocNo()); + task.setTargetSite(locDto.getOperationPort()); + task.setBarcode(loc.getBarcode()); + boolean res = taskService.save(task); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 宸ヤ綔妗f槑缁嗕繚瀛� + for (OutDetlDto detl : locDto.getDetls()) { + LocDetl locDetl = locDetlService.getById(detl.getDetlId()); + if(locDetl == null) { + throw new CoolException("鏄庣粏涓嶅瓨鍦�"); + } + + TaskDetl taskDetl = new TaskDetl(); + taskDetl.sync(locDetl); + taskDetl.setTaskId(task.getId()); + taskDetl.setAnfme(detl.getAnfme()); + taskDetl.setStock(detl.getStock()); + 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.setDetlId(taskDetl.getId()); + boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField); + if(!taskDetlFieldSave){ + throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触"); + } + } + } + + //搴撲綅F => R + loc.setLocStsId(LocStsType.R.val()); + loc.setUpdateTime(new Date()); + boolean locUpdate = locService.updateById(loc); + if(!locUpdate){ + throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�"); } } } -- Gitblit v1.9.1