skyouc
1 天以前 c312a110ee4823a4a1f912a05e9648edc56f96e7
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -120,30 +120,25 @@
                    if (!deliveryItemService.updateById(deliveryItem)) {
                        throw new CoolException("DO单明细更新失败!!");
                    }
                }
            }
        }
        if (!Objects.isNull(order.getPoId())) {
            Delivery delivery = deliveryService.getById(order.getPoId());
                    Delivery delivery = deliveryService.getOne(new LambdaQueryWrapper<Delivery>().eq(Delivery::getCode, orderItem.getPoCode()));
            if (!Objects.isNull(delivery)) {
                Double sum = orderItems.stream().mapToDouble(AsnOrderItem::getAnfme).sum();
                Double workQty = Math.round((delivery.getWorkQty() - sum) * 10000) / 10000.0;
                delivery.setWorkQty(workQty.compareTo(0.0) >= 0 ? workQty : 0).setExceStatus(POExceStatus.PO_EXCE_STATUS_UN_EXCE.val);
                        Double wkQty = Math.round((delivery.getWorkQty() - delivery.getAnfme()) * 10000) / 10000.0;
                        delivery.setWorkQty(wkQty.compareTo(0.0) >= 0 ? wkQty : 0).setExceStatus(POExceStatus.PO_EXCE_STATUS_UN_EXCE.val);
                if (!deliveryService.updateById(delivery)) {
                    throw new CoolException("DO单据修改失败!!");
                }
            }
        }
            }
        }
        if (!this.remove(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, id))) {
            throw new CoolException("主单删除失败!!");
        }
        if (!outStockItemService.remove(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, id))) {
            throw new CoolException("单据明细删除失败!!");
        }
//        if (!this.saveOrUpdate(order)) {
//            throw new CoolException("单据取消失败!!");
//        }
        return R.ok("操作成功");
    }
@@ -166,11 +161,11 @@
            throw new CoolException("单据不存在!!");
        }
        Map<Long, List<DeliveryItem>> listMap = items.stream().collect(Collectors.groupingBy(DeliveryItem::getDeliveryId));
        listMap.keySet().forEach(key -> {
            //TODO 判断单据是否已经存在,如存在则累加修改子表,不存在才新建
            Delivery delivery = deliveryService.getById(key);
        //获取第一个ID
        Long deliveryId = items.stream().findFirst().get().getDeliveryId();
        Delivery delivery = deliveryService.getById(deliveryId);
            if (Objects.isNull(delivery)) {
                throw new CoolException("单据不存在!!");
            throw new CoolException("主单据不存在!!");
            }
            AsnOrder order = new AsnOrder();
            BeanUtils.copyProperties(delivery, order);
@@ -182,21 +177,22 @@
                    .setType(delivery.getType())
                    .setWkType(delivery.getWkType())
                    .setCode(ruleCode)
                    .setPoId(delivery.getId())
                    .setId(null)
                    .setUpdateBy(loginUserId)
                    .setCreateBy(loginUserId)
                    .setPoCode(delivery.getCode());
                .setCreateBy(loginUserId);
            if (!this.save(order)) {
                throw new CoolException("主单保存失败!!");
            }
        listMap.keySet().forEach(key -> {
            Delivery delivery1 = deliveryService.getById(key);
            List<AsnOrderItem> orderItems = new ArrayList<>();
            listMap.get(key).forEach(item -> {
                AsnOrderItem orderItem = new AsnOrderItem();
                Double anfme = Math.round((item.getAnfme() - item.getWorkQty() - item.getQty()) * 10000) / 10000.0;
                BeanUtils.copyProperties(item, orderItem);
                orderItem.setId(null)
                        .setPoCode(order.getPoCode())
                        .setPoCode(delivery1.getCode())
                        .setMaktx(item.getMaktx())
                        .setMatnrCode(item.getMatnrCode())
                        .setFieldsIndex(item.getFieldsIndex())
@@ -210,6 +206,7 @@
                        .setPlatOrderCode(item.getPlatOrderCode())
                        .setProjectCode(item.getProjectCode())
                        .setPlatItemId(item.getPlatItemId())
                        .setFieldsIndex(item.getFieldsIndex())
                        .setUpdateBy(loginUserId)
                        .setCreateBy(loginUserId)
                        .setPoDetlId(item.getId());
@@ -223,17 +220,13 @@
            });
            Double sum = orderItems.stream().mapToDouble(AsnOrderItem::getAnfme).sum();
            //修改计划数量
            order.setAnfme(sum).setWorkQty(0.0);
            if (!this.saveOrUpdate(order)) {
                throw new CoolException("主单数量修改失败!!");
            }
            if (!asnOrderItemService.saveBatch(orderItems)) {
                throw new CoolException("明细保存失败!!");
            }
            Short exceStatus = POExceStatus.PO_EXCE_STATUS_SECTION_DONE.val;
            if (delivery.getAnfme().compareTo(order.getAnfme()) <= 0) {
            if (delivery1.getAnfme().compareTo(sum) <= 0) {
                exceStatus = AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val;
            }
@@ -243,8 +236,15 @@
                    .eq(Delivery::getId, key))) {
                throw new CoolException("主单修改失败!!");
            }
        });
        Double sum = items.stream().mapToDouble(DeliveryItem::getAnfme).sum();
        //修改计划数量
        order.setAnfme(sum).setWorkQty(0.0);
        if (!this.saveOrUpdate(order)) {
            throw new CoolException("主单数量修改失败!!");
        }
        return R.ok();
    }