skyouc
昨天 f68071dd4e77fde82663cd451a174025292a7a32
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java
@@ -382,94 +382,89 @@
                    throw new RuntimeException(e);
                }
            } else if (order.getType().equals(OrderType.ORDER_OUT.type)){
                List<Stock> stocks = stockService.list(new LambdaQueryWrapper<Stock>().eq(Stock::getSourceCode, order.getCode()));
                if (stocks.isEmpty()) {
                    throw new CoolException("出庫歷史不存在!!");
                List<StockItem> stockItems = stockItemService.list(new LambdaQueryWrapper<StockItem>().eq(StockItem::getSourceItemId, orderItem.getId()));
                if (stockItems.isEmpty()) {
                    return;
                }
                Set<Long> stockIds = stockItems.stream().map(StockItem::getStockId).collect(Collectors.toSet());
                List<Stock> stocks = stockService.listByIds(stockIds);
                //过滤拣货入库明细,避免上报
                List<Stock> stockList = stocks.stream().filter(stock -> stock.getType().equals(OrderType.ORDER_OUT.type)).collect(Collectors.toList());
                List<Long> list = stockList.stream().map(Stock::getId).collect(Collectors.toList());
                List<StockItem> stockItems1 = stockItemService.list(new LambdaQueryWrapper<StockItem>().in(StockItem::getStockId, list));
                String finalNickName = nickName;
                stocks.forEach(stock -> {
                    //筛选当前唯一字段所有出入库信息
                    List<StockItem> stockItems = stockItemService.list(new LambdaQueryWrapper<StockItem>()
                            .eq(StockItem::getStockId, stock.getId()));
                    if (stockItems.isEmpty()) {
                        throw new CoolException("出庫單明細不存在!!");
                    }
                    //获取库存中订单库位
//                Set<Long> longSet = stockItems.stream().map(StockItem::getStockId).collect(Collectors.toSet());
                    stockItems.forEach(items -> {
                        List<ReportDataParam> dataParams = new ArrayList<>();
                        //获取索引内容
                        Map<String, String> fields = FieldsUtils.getFields(items.getFieldsIndex());
                        //设置通用参数
                        param.setWMSNO(order.getCode())
                                .setPONO(order.getPoCode())
                                .setOrderNO(order.getPoCode())
                                .setOrderDate(order.getCreateTime())
                                .setItemCode(items.getMatnrCode())
                                .setEditUser(finalNickName)
                                .setEditDate(order.getUpdateTime())
                                .setGoodsNO(fields.get("crushNo"))
                                .setMemoDtl(order.getMemo());
                        if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_DONE_IN.type)) {
                            //采购入库单
                            params.setOrderType("PO_Instock").setAction("Update");
                            //获取指定查询字段CrushNo 票号
                            param.setInQty(items.getQty());
                        } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.type)) {
                            //采购退货
                            params.setOrderType("PR_Outstock").setAction("Update");
                            param.setOutQty(items.getQty());
                        } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER_IN.type)) {
                            //调拔入库单
                            params.setOrderType("Mv_Instock").setAction("Update");
                        } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PROD.type)) {
                            //生产入库单
                stockItems1.forEach(stockItem -> {
                    List<ReportDataParam> dataParams = new ArrayList<>();
                    //获取索引内容
                    Map<String, String> fields = FieldsUtils.getFields(stockItem.getFieldsIndex());
                    //设置通用参数
                    param.setWMSNO(order.getCode())
                            .setPONO(order.getPoCode())
                            .setOrderNO(order.getPoCode())
                            .setOrderDate(order.getCreateTime())
                            .setItemCode(stockItem.getMatnrCode())
                            .setEditUser(finalNickName)
                            .setEditDate(order.getUpdateTime())
                            .setGoodsNO(fields.get("crushNo"))
                            .setMemoDtl(order.getMemo());
                    if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_DONE_IN.type)) {
                        //采购入库单
                        params.setOrderType("PO_Instock").setAction("Update");
                        //获取指定查询字段CrushNo 票号
                        param.setInQty(stockItem.getAnfme());
                    } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE_RETURN.type)) {
                        //采购退货
                        params.setOrderType("PR_Outstock").setAction("Update");
                        param.setOutQty(stockItem.getAnfme());
                    } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER_IN.type)) {
                        //调拔入库单
                        params.setOrderType("Mv_Instock").setAction("Update");
                    } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PROD.type)) {
                        //生产入库单
//                      params.setOrderType("WO_Outstock").setAction("Update");
                        } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type)) {
                            //生产退料
                            params.setOrderType("WR_Instock").setAction("Update");
                            param.setInQty(items.getQty());
                        } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type)) {
                            //生产领料
                            params.setOrderType("WO_Outstock").setAction("Update");
                            param.setOutQty(items.getQty());
                        } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PROD_ADDITION.type)) {
                            //生产补料
                            params.setOrderType("WR_Instock_BL").setAction("Update");
                            param.setOutQty(items.getQty());
                        } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_FIX_OUT.type)) {
                            params.setOrderType("WO_Outstock_WR").setAction("Update");
                            param.setOutQty(items.getQty());
                        } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type)) {
                            //其它入库单/手动入库单
                            params.setOrderType("In_Instock").setAction("Update");
                            param.setInQty(items.getQty());
                    } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type)) {
                        //生产退料
                        params.setOrderType("WR_Instock").setAction("Update");
                        param.setInQty(stockItem.getAnfme());
                    } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_RETURN_ORDER.type)) {
                        //生产领料
                        params.setOrderType("WO_Outstock").setAction("Update");
                        param.setOutQty(stockItem.getAnfme());
                    } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_PROD_ADDITION.type)) {
                        //生产补料
                        params.setOrderType("WR_Instock_BL").setAction("Update");
                        param.setOutQty(stockItem.getAnfme());
                    } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_FIX_OUT.type)) {
                        params.setOrderType("WO_Outstock_WR").setAction("Update");
                        param.setOutQty(stockItem.getAnfme());
                    } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type)) {
                        //其它入库单/手动入库单
                        params.setOrderType("In_Instock").setAction("Update");
                        param.setInQty(stockItem.getAnfme());
                        } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER.type)) {
                            //其它出库单/手动出库单
                            params.setOrderType("Io_Outstock").setAction("Update");
                            param.setOutQty(items.getQty());
                        }
                        dataParams.add(param);
                    } else if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER.type)) {
                        //其它出库单/手动出库单
                        params.setOrderType("Io_Outstock").setAction("Update");
                        param.setOutQty(stockItem.getAnfme());
                    }
                    dataParams.add(param);
                        params.setData(dataParams);
                        try {
                            R reported = uploadReportOrders(params);
                            if (Integer.valueOf(reported.get("code").toString()) == 200) {
                                order.setReportOnce(5);
                                asnOrderService.updateById(order);
                            }
                        } catch (Exception e) {
                            log.error("<UNK>", e);
                    params.setData(dataParams);
                    try {
                        R reported = uploadReportOrders(params);
                        if (Integer.valueOf(reported.get("code").toString()) == 200) {
                            order.setReportOnce(5);
                            asnOrderService.updateById(order);
                        }
                        try {
                            //休眠3秒
                            Thread.sleep(3000);
                        } catch (InterruptedException e) {
                            throw new RuntimeException(e);
                        }
                    });
                    } catch (Exception e) {
                        log.error("<UNK>", e);
                    }
                    try {
                        //休眠3秒
                        Thread.sleep(3000);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                });
            }
        });