From aecc30be4f72119829bf7f607aa6031e15fc3c0c Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 30 七月 2025 08:01:28 +0800 Subject: [PATCH] 调拔单功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java | 90 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 89 insertions(+), 1 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java index 2a64db5..2749343 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java @@ -3,11 +3,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.common.domain.PageResult; +import com.vincent.rsf.server.manager.controller.params.OrgLocParams; import com.vincent.rsf.server.manager.controller.params.TransferItemParams; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.*; @@ -40,6 +42,14 @@ private TransferOrderService transferOrderService; @Autowired private TransferService transferService; + @Autowired + private AsnOrderService asnOrderService; + @Autowired + private AsnOrderItemService asnOrderItemService; + @Autowired + private LocItemService locItemService; + @Autowired + private LocService locService; /** * @author Ryan @@ -239,13 +249,66 @@ } TransferOrder transferOrder = new TransferOrder(); - transferOrder.setTransferId(transfer.getId()).setOrderId(wkOrder.getId()).setExceStatus((int)CheckExceStatus.CHECK_ORDER_STATUS_INIT.val); + transferOrder.setTransferId(transfer.getId()) + .setOrderId(wkOrder.getId()) + .setType(OrderType.ORDER_OUT.type); if (!transferOrderService.save(transferOrder)) { throw new CoolException("鍗曟嵁鍏宠仈澶辫触锛侊紒"); } + try { + /**鐢熸垚鍏ュ簱鍗曟嵁淇℃伅*/ + genInStock(wkOrder, orderItems); + } catch (Exception e) { + throw new CoolException(e.getMessage()); + } + return transfer; + } + + /** + * @author Ryan + * @date 2025/7/29 + * @description: TODO + * @version 1.0 + */ + @Transactional(rollbackFor = Exception.class) + public void genInStock(WkOrder wkOrder, List<WkOrderItem> orderItems) throws Exception { + WkOrder order = new WkOrder(); + BeanUtils.copyProperties(wkOrder, order); + order.setType(OrderType.ORDER_IN.type) + .setWkType(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type) + .setId(null); + String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, order); + if (StringUtils.isBlank(ruleCode)) { + throw new CoolException("鍏ュ簱鍗曞彿鐢熸垚澶辫触锛侊紒"); + } + order.setCode(ruleCode); + + if (!asnOrderService.save(order)) { + throw new CoolException("鍗曟嵁淇濆瓨澶辫触锛侊紒"); + } + + orderItems.forEach(item -> { + item.setOrderId(order.getId()) + .setOrderCode(order.getCode()) + .setId(null); + + if (!asnOrderItemService.save(item)) { + throw new CoolException("鍏ュ簱鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); + } + }); + + TransferOrder transferOrder = new TransferOrder(); + transferOrder.setTransferId(wkOrder.getPoId()) + .setOrderId(order.getId()) + .setType(OrderType.ORDER_IN.type); + + if (!transferOrderService.save(transferOrder)) { + throw new CoolException("鍗曟嵁鍏宠仈澶辫触锛侊紒"); + } + } /** @@ -273,4 +336,29 @@ transferItemService.remove(new LambdaQueryWrapper<TransferItem>().in(TransferItem::getTransferId, list)); return true; } + + /** + * @author Ryan + * @date 2025/7/29 + * @description: 鑾峰彇鍘熷簱鍖虹墿鏂欎俊鎭� + * @version 1.0 + */ + @Override + public IPage<LocItem> getLocsItems(OrgLocParams params, Long loginUserId) { + List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>() + .eq(!Objects.isNull(params.getOrgAreaId()), Loc::getAreaId, params.getOrgAreaId())); + + Page<LocItem> page = new Page<>(params.getCurrent(), params.getPageSize()); + LambdaQueryWrapper<LocItem> wrapper = new LambdaQueryWrapper<>(); + + wrapper.eq(StringUtils.isNotBlank(params.getMatnrCode()), LocItem::getMatnrCode, params.getMatnrCode().trim()) + .like(StringUtils.isNotBlank(params.getMaktx().trim()), LocItem::getMaktx, params.getMaktx().trim()); + if (!locs.isEmpty()) { + Set<Long> locIds = locs.stream().map(Loc::getId).collect(Collectors.toSet()); + wrapper.in(LocItem::getLocId, locIds); + return locItemService.page(page, wrapper); + } else { + return locItemService.page(page, wrapper); + } + } } -- Gitblit v1.9.1