From 481819975d08f3455fb148410e272f560dd7adb2 Mon Sep 17 00:00:00 2001 From: verou <857149855@qq.com> Date: 星期四, 03 四月 2025 09:14:47 +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/MobileServiceImpl.java | 205 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 192 insertions(+), 13 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java index 90a66e0..8edde8a 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java @@ -4,13 +4,8 @@ import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; -import com.vincent.rsf.server.api.controller.params.CheckObjParams; -import com.vincent.rsf.server.api.controller.params.OtherReceiptParams; -import com.vincent.rsf.server.api.controller.params.ReceiptParams; -import com.vincent.rsf.server.api.entity.dto.CheckObjDto; -import com.vincent.rsf.server.api.entity.dto.InspectDetlDto; -import com.vincent.rsf.server.api.entity.dto.InspectItemDto; -import com.vincent.rsf.server.api.entity.dto.ReceiptDetlsDto; +import com.vincent.rsf.server.api.controller.params.*; +import com.vincent.rsf.server.api.entity.dto.*; import com.vincent.rsf.server.api.entity.enums.OrderWorkType; import com.vincent.rsf.server.api.service.MobileService; import com.vincent.rsf.server.common.config.ConfigProperties; @@ -35,7 +30,7 @@ import com.vincent.rsf.server.system.service.FieldsService; import com.vincent.rsf.server.system.service.UserLoginService; import com.vincent.rsf.server.system.utils.SerialRuleUtils; -import org.apache.tika.utils.StringUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -48,6 +43,7 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * @author Ryan @@ -100,13 +96,28 @@ @Autowired private WaitPakinItemService waitPakinItemService; - @Autowired private AsnOrderItemLogService asnOrderItemLogService; - @Autowired private FieldsItemService fieldsItemService; - + @Autowired + private LocService locService; + @Autowired + private PurchaseService purchaseService; + @Autowired + private StockService stockService; + @Autowired + private StockItemService stockItemService; + @Autowired + private TaskService taskService; + @Autowired + private TaskItemService taskItemService; + @Autowired + private LocAreaMatRelaMapper locAreaMatRelaMapper; + @Autowired + private LocAreaRelaMapper locAreaRelaMapper; + @Autowired + private LocAreaMapper locAreaMapper; /** * @author Ryan @@ -152,7 +163,7 @@ */ @Override public R getOrderByCode(String barcode) { - if (StringUtils.isEmpty(barcode)) { + if (StringUtils.isBlank(barcode)) { return R.error("鏍囩鐮佷笉鑳戒负绌猴紒锛�"); } List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, barcode)); @@ -544,7 +555,7 @@ */ @Override public R checkUpdate(QlyIsptItem params) { - if (Objects.isNull(params.getId()) || Objects.isNull(params.getIspectId())) { + if (Objects.isNull(params.getId())) { throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } IsptItemsParams itemsParams = new IsptItemsParams(); @@ -559,6 +570,174 @@ } /** + * @author Ryan + * @description 浜哄伐涓婃灦 + * @param + * @return + * @time 2025/4/2 16:33 + */ + @Override + public R operateToStock(OpStockParams params) { + if (org.apache.commons.lang3.StringUtils.isBlank(params.getBarcode())) { + throw new CoolException("鎷栫洏鐮佷笉鑳戒负绌猴紒锛�"); + } + if (StringUtils.isBlank(params.getAsnCode())) { + throw new CoolException("鍗曟嵁涓嶈兘涓虹┖锛侊紒"); + } + if (StringUtils.isBlank(params.getMatnrCode())) { + throw new CoolException("鐗╂枡缂栫爜涓嶈兘涓虹┖锛侊紒"); + } + AsnOrder asnOrders = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, params.getAsnCode())); + if (Objects.isNull(asnOrders)) { + throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); + } + List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, params.getBarcode())); + if (!locs.isEmpty()) { + throw new CoolException("鎷栫洏宸蹭娇鐢�"); + } + List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, params.getBarcode())); + if (!waitPakins.isEmpty()) { + throw new CoolException("鎷栫洏宸蹭娇鐢�!!"); + } + AsnOrderItem orderItems = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>() + .eq(AsnOrderItem::getAsnId, asnOrders.getId()) + .eq(AsnOrderItem::getMatnrCode, params.getMatnrCode())); + if (Objects.isNull(orderItems)) { + return R.ok(null); + } + orderItems.setBarcode(params.getBarcode()); + + return R.ok(orderItems); + } + + /** + * 浜哄伐涓婃灦鍏ュ簱 + * @param params + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public R publicToStock(PublicToStockParams params) { + if (Objects.isNull(params.getLocCode()) || StringUtils.isBlank(params.getLocCode())) { + throw new CoolException("搴撲綅涓嶈兘涓虹┖锛侊紒"); + } + if (Objects.isNull(params.getItemList()) || params.getItemList().isEmpty()) { + throw new CoolException("鍗曟嵁鏄庣粏涓嶈兘涓虹┖锛侊紒"); + } + Long OrderId = params.getItemList().stream().findFirst().get().getAsnId(); + AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, OrderId)); + if (Objects.isNull(order)) { + throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); + } + Stock stock = new Stock(); + stock.setAsnId(OrderId).setAsnCode(order.getCode()); + if (!Objects.isNull(order.getPoCode()) && StringUtils.isNotBlank(order.getPoCode())) { + Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, order.getPoCode())); + stock.setPlatOrderNo(purchase.getPlatCode()).setPlatToken(purchase.getPlatId()); + } + String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null); + if (StringUtils.isBlank(ruleCode)) { + throw new CoolException("褰撳墠涓氬姟锛�" + SerialRuleCode.SYS_STOCK_CODE + "锛岀紪鐮佽鍒欎笉瀛樺湪锛侊紒"); + } + if (!stockService.save(stock)) { + throw new CoolException("搴撳瓨淇濆瓨澶辫触锛侊紒"); + } + Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, params.getLocCode())); + if (Objects.isNull(loc)) { + throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�"); + } + List<StockItem> stockItems = new ArrayList<>(); + params.getItemList().forEach(orderItem -> { + StockItem stockItem = new StockItem(); + BeanUtils.copyProperties(orderItem, stockItem); + stockItem.setAsnItemId(orderItem.getId()) + .setBarcode(orderItem.getBarcode()) + .setLocId(loc.getId()) + .setId(null) + .setStockId(stock.getId()); + stockItems.add(stockItem); + }); + + if (!stockItemService.saveBatch(stockItems)) { + throw new CoolException("浠诲姟涓婃灦澶辫触锛侊紒"); + } + return R.ok(stock); + } + + /** + * 鑾峰彇浠诲姟淇℃伅 + * @param code + * @return + */ + @Override + public R taskToStock(String code) { + if (StringUtils.isBlank(code)) { + throw new CoolException("鎷栫洏鐮佷笉鑳戒负绌猴紒锛�"); + } + Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, code)); + if (Objects.isNull(task)) { + throw new CoolException("鎷栫洏浠诲姟涓嶅瓨鍦紒锛�"); + } + List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); + if (!taskItems.isEmpty()) { + throw new CoolException("鎷栫洏浠诲姟鏄庣粏涓嶅瓨鍦紒锛�"); + } + TaskQueueDto queueDto = new TaskQueueDto(); + queueDto.setTask(task).setTaskItems(taskItems); + List<Long> list = taskItems.stream().map(TaskItem::getMatnrId).collect(Collectors.toList()); + List<LocAreaMatRela> matRelas = locAreaMatRelaMapper.selectList(new LambdaQueryWrapper<LocAreaMatRela>().in(LocAreaMatRela::getMatnrId, + list)); + TaskLocAreaDto locAreaDto = new TaskLocAreaDto(); + /**鍒ゆ柇鏄惁涓虹┖*/ + if (matRelas.isEmpty()) { + locAreaDto.setLocs(new ArrayList<>()); + } else { + Long ids = matRelas.stream().map(LocAreaMatRela::getLocId).collect(Collectors.toList()).stream().findFirst().get(); + List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getId, ids)); + if (locs.isEmpty()) { + locAreaDto.setLocs(new ArrayList<>()); + } else { + LocArea locArea = locAreaMapper.selectById(new LambdaQueryWrapper<Loc>().in(Loc::getId, ids)); + if (!Objects.isNull(locArea)) { + locAreaDto.setAreaName(locArea.getName()).setAreaCode(locArea.getCode()).setAreaId(locArea.getId()); + } + locAreaDto.setLocs(locs); + } + } + queueDto.setLocArea(locAreaDto); + + return R.ok(queueDto); + } + + /** + * @Author Ryan + * @param code + * @desc 浠诲姟涓婃灦 + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public R taskGetLocs(String code) throws Exception { + if (StringUtils.isBlank(code)) { + throw new CoolException("鎷栫洏鐮佷笉鑳戒负绌猴紒锛�"); + } + Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, code)); + if (Objects.isNull(task)) { + throw new CoolException("鎷栫洏浠诲姟涓嶅瓨鍦紒锛�"); + } + List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); + if (!taskItems.isEmpty()) { + throw new CoolException("鎷栫洏浠诲姟鏄庣粏涓嶅瓨鍦紒锛�"); + } + List<Task> tasks = new ArrayList<>(); + tasks.add(task); + + taskService.completeTask(tasks); + + return R.ok(); + } + + /** * 鑾峰彇ReceiptDetlsDtos */ private R getAsnOrderItem(List<AsnOrderItem> items) { -- Gitblit v1.9.1