无聊啊无聊啊啊啊啊啊啊 2021-10-12 10:47 采纳率: 0%
浏览 33

关于重排序的,工作中遇到的问题


public OutboundOrderVO save(OutboundOrderAddDTO dto) {
        int dataDependency = 0;
        OutboundOrder model = BeanUtil.toBean(dto, OutboundOrder.class);
        model.setCompanyId(SecurityUtils.getCompanyId());
        model.setCreateId(SecurityUtils.getLoginUser().getStaffId());
        // 判断仓库是否可以出入库
        List<String> consumableIds = dto.getInfoList().stream().map(OutboundInfoAddDTO::getConsumableId).collect(Collectors.toList());
        // 根据耗材id查询所在仓库
        List<Consumables> consumablesList = consumablesService.listByIds(consumableIds);
        Set<String> wareHouseIds = consumablesList.stream().map(Consumables::getWarehouseId).collect(Collectors.toSet());
        List<String> lockingList = wareHouseService.findByIds(wareHouseIds, CommonConstant.WARE_HOUSE_LOCKING).stream().map(WareHouse::getId).collect(Collectors.toList());
        if (CollectionUtil.isNotEmpty(lockingList)) {
            // 所选耗材中存在仓库已经锁定,不能出库
            dataDependency = 1;
            List<Consumables> lockingConsumables = consumablesList.stream().filter(t -> lockingList.contains(t.getWarehouseId())).collect(Collectors.toList());
            StringBuffer msg = new StringBuffer();
            for (int i = 0; i < lockingConsumables.size(); i++) {
                msg.append(lockingConsumables.get(i).getConsumablesName());
                if (i != lockingConsumables.size() - 1) {
                    msg.append(",");
                }
            }
            throw new BizException("耗材:" + msg + "所在仓库暂时禁止出入库");
        }
        dataDependency = 2;
        // 获取流程审批单号单号
        ProcedureAddDTO procedureAddDTO = dto.getProcedureAddDTO();
        if (procedureAddDTO == null) {
            throw new BizException("流程数据不能为空");
        }
        String processId= FlowCodeUtils.getFlowCode();
        model.setProcessId(processId);
        procedureAddDTO.setNumberId(processId);
        boolean isOdoType = false;
        if ((isOdoType = CommonConstant.ODO_TYPE.equals(model.getOdoType())) || CommonConstant.ODO_TYPE_SELF_APPLY.equals(model.getOdoType())) {
            int y = dataDependency;
            if(isOdoType){
                model.setOdoCode(CommonConstant.CK_CHAR + CodeRandom.getRandom(CommonConstant.CODE_RANDOM_BIT));
            }else {
                model.setOdoCode(CommonConstant.ZZCK_CHAR + CodeRandom.getRandom(CommonConstant.CODE_RANDOM_BIT));
            }
            // 设置出库单的初始状态为:派发待确认
            model.setOdoStatus(CommonConstant.ODO_DISTRIBUTION_CONFIRMING);
            super.save(model);
            try {
                dataDependency = 3;
                remoteFlowService.remoteSaveProduce(procedureAddDTO);
            } catch (RuntimeException e) {
                throw new BizException("发起流程失败,请联系管理员");
            }
            // 新增出库详情
            String odoId = model.getId();
            dto.getInfoList().forEach(e -> outboundInfoService.save(e, odoId));
            return BeanUtil.toBean(model, OutboundOrderVO.class);
        } else {
            dataDependency = 4;
            //  出库申请
            return outApplySave(model, dto.getInfoList(),dto.getProcedureAddDTO());
        }
    }

dataDependency变量是我后面加的。没加之前出现了问题:
下面这句代码执行了,抛出了异常。这句代码在源代码中的前面

throw new BizException("耗材:" + msg + "所在仓库暂时禁止出入库");

但是在下面的这句代码也执行了,按道理下面这个去新增的代码不应该执行,或许是因为重排序。所以我用dataDependency 添加数据依赖防止重排序,但不确定是否正确。

remoteFlowService.remoteSaveProduce(procedureAddDTO);

  • 写回答

2条回答 默认 最新

  • 关注

    把需要排序的类实现Comparable接口。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月12日

悬赏问题

  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?