1
20 小时以前 55ca0ec3a1ae73d73981fdb844e6c84760da9009
lsh#
3个文件已修改
111 ■■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java
@@ -13,6 +13,7 @@
import com.vincent.rsf.server.manager.entity.WkOrder;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import com.vincent.rsf.server.manager.enums.OrderType;
import com.vincent.rsf.server.manager.service.AsnOrderItemService;
import com.vincent.rsf.server.manager.service.OutStockItemService;
import com.vincent.rsf.server.manager.service.OutStockService;
import com.vincent.rsf.server.system.constant.DictTypeCode;
@@ -42,6 +43,8 @@
    private OutStockItemService outStockItemService;
    @Autowired
    private DictDataService dictDataService;
    @Autowired
    private AsnOrderItemService asnOrderItemService;
    @GetMapping("/outStockTaskItem/{barcode}")
    @ApiOperation("快速拣货查询")
@@ -144,9 +147,7 @@
        orderOutTaskParam.setOrderId(param.getOrderItemId());
        orderOutTaskParam.setWaveId(param.getWaveId());
        return outStockService.getOrderOutTaskItem(orderOutTaskParam);
//        return R.ok();
        return outStockService.getOrderOutTaskItem(orderOutTaskParam,param.getOrderItemId());
    }
    //
    @PostMapping("/orderOut/getOutLocRun")
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java
@@ -25,6 +25,7 @@
    R updateOrderItem(AsnOrderAndItemsParams params, Long loginUserId);
    R getOrderOutTaskItem(OrderOutTaskParam param);
    R getOrderOutTaskItem(OrderOutTaskParam param,Long orderItemId);
    R genOutStockTask(List<OutStockToTaskParams> params, Long loginUserId, Long outId);
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -454,6 +454,33 @@
        return R.ok(locItems);
    }
    @Override
    public R getOrderOutTaskItem(OrderOutTaskParam param,Long orderItemId) {
        OrderOutTaskParam orderOutTaskParam = new OrderOutTaskParam();
        orderOutTaskParam.setWaveId(param.getWaveId());
        if (Cools.isEmpty(param.getWaveId())) {
            throw new CoolException("策略参数为空");
        }
        if (Cools.isEmpty(param.getOrderId())) {
            throw new CoolException("单据ID为空");
        }
        WkOrderItem byId = asnOrderItemService.getById(orderItemId);
        param.setOrderId(byId.getOrderId());
        WaveRule waveRule = waveRuleService.getOne(new LambdaQueryWrapper<WaveRule>()
                .eq(WaveRule::getId, param.getWaveId()));
        if (Cools.isEmpty(waveRule)) {
            throw new CoolException("未找到当前策略");
        }
        List<OrderOutItemDto> locItems = null;
        List<Long> itemIds = new ArrayList<>();
        itemIds.add(orderItemId);
        locItems = getOutOrderList(param.getOrderId(), waveRule,itemIds);
        return R.ok(locItems);
    }
    /**
     * 生成出库任务
     *
@@ -675,6 +702,82 @@
    }
    private List<OrderOutItemDto> getOutOrderList(Long orderId, WaveRule waveRule,List<Long> orderItemIdList) {
        List<WkOrderItem> wkOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
                        .in(WkOrderItem::getId, orderItemIdList).eq(WkOrderItem::getOrderId, orderId));
        List<OrderOutItemDto> list = new ArrayList<>();
        Set<ExistDto> existDtos = new HashSet<>();
        for (WkOrderItem wkOrderItem : wkOrderItems) {
            BigDecimal issued = new BigDecimal(wkOrderItem.getAnfme().toString())
                    .subtract(new BigDecimal(wkOrderItem.getWorkQty().toString())
                    );
            if (issued.doubleValue() <= 0) {
                continue;
            }
            List<LocItem> locItems = new ArrayList<>();
            if (WaveRuleType.Efficiency_First.type.equals(waveRule.getType())) {
                locItems = LocManageUtil.getEfficiencyFirstItemList(wkOrderItem.getMatnrCode(), wkOrderItem.getSplrBatch(), wkOrderItem.getAnfme());
            } else if (WaveRuleType.First_In_First_Out.type.equals(waveRule.getType())) {
                locItems = LocManageUtil.getFirstInFirstOutItemList(wkOrderItem.getMatnrCode(), wkOrderItem.getSplrBatch(), wkOrderItem.getAnfme());
            } else {
                locItems = LocManageUtil.getFirstInFirstOutItemList(wkOrderItem.getMatnrCode(), wkOrderItem.getSplrBatch(), wkOrderItem.getAnfme());
            }
            for (LocItem locItem : locItems) {
                Loc loc = locService.getById(locItem.getLocId());
                List<LocItem> itemList = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocCode, locItem.getLocCode()));
                if (issued.doubleValue() > 0) {
                    ExistDto existDto = new ExistDto().setBatch(locItem.getBatch()).setMatnr(locItem.getMatnrCode()).setLocNo(locItem.getLocCode());
                    if (existDtos.add(existDto)) {
                        locItem.setOutQty(issued.doubleValue() >= locItem.getAnfme() ? locItem.getAnfme() : issued.doubleValue());
                        locItem.setBarcode(loc.getBarcode());
                        OrderOutItemDto orderOutItemDto = new OrderOutItemDto();
                        orderOutItemDto.setLocItem(locItem);
                        List<DeviceSite> deviceSites = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>()
                                .eq(DeviceSite::getChannel, loc.getChannel())
                                .eq(DeviceSite::getType, issued.doubleValue() >= locItem.getAnfme() && itemList.size() == 1 ? TaskType.TASK_TYPE_OUT.type : TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)
                        );
                        if (!deviceSites.isEmpty()) {
                            List<OrderOutItemDto.staListDto> maps = new ArrayList<>();
                            for (DeviceSite sta : deviceSites) {
                                OrderOutItemDto.staListDto staListDto = new OrderOutItemDto.staListDto();
                                staListDto.setStaNo(sta.getSite());
                                staListDto.setStaName(sta.getSite());
                                maps.add(staListDto);
                            }
                            orderOutItemDto.setStaNos(maps);
                            //默认获取第一站点
                            DeviceSite deviceSite = deviceSites.stream().findFirst().get();
                            orderOutItemDto.setSiteNo(deviceSite.getSite());
                        }
                        list.add(orderOutItemDto);
                        issued = issued.subtract(new BigDecimal(locItem.getAnfme().toString()));
                    }
                }
            }
            if (issued.doubleValue() > 0) {
                LocItem locItem = new LocItem()
                        .setId(new Random().nextLong())
                        .setMatnrCode(wkOrderItem.getMatnrCode())
                        .setMaktx(wkOrderItem.getMaktx())
                        .setAnfme(0.00)
                        .setWorkQty(issued.doubleValue())
                        .setOutQty(issued.doubleValue())
                        .setUnit(wkOrderItem.getStockUnit())
                        .setBatch(wkOrderItem.getSplrBatch());
                OrderOutItemDto orderOutItemDto = new OrderOutItemDto();
                orderOutItemDto.setLocItem(locItem);
                list.add(orderOutItemDto);
            }
        }
        return list;
    }
    /**
     * @param
     * @param wave