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单明细更新失败!!");
                    }
                    Delivery delivery = deliveryService.getOne(new LambdaQueryWrapper<Delivery>().eq(Delivery::getCode, orderItem.getPoCode()));
                    if (!Objects.isNull(delivery)) {
                        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 (!Objects.isNull(order.getPoId())) {
            Delivery delivery = deliveryService.getById(order.getPoId());
            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);
                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,37 +161,38 @@
            throw new CoolException("单据不存在!!");
        }
        Map<Long, List<DeliveryItem>> listMap = items.stream().collect(Collectors.groupingBy(DeliveryItem::getDeliveryId));
        //获取第一个ID
        Long deliveryId = items.stream().findFirst().get().getDeliveryId();
        Delivery delivery = deliveryService.getById(deliveryId);
        if (Objects.isNull(delivery)) {
            throw new CoolException("主单据不存在!!");
        }
        AsnOrder order = new AsnOrder();
        BeanUtils.copyProperties(delivery, order);
        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, order);
        if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) {
            throw new CoolException("编码规则错误:请检查 「SYS_OUT_STOCK_CODE」编码是否设置成功");
        }
        order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
                .setType(delivery.getType())
                .setWkType(delivery.getWkType())
                .setCode(ruleCode)
                .setId(null)
                .setUpdateBy(loginUserId)
                .setCreateBy(loginUserId);
        if (!this.save(order)) {
            throw new CoolException("主单保存失败!!");
        }
        listMap.keySet().forEach(key -> {
            //TODO 判断单据是否已经存在,如存在则累加修改子表,不存在才新建
            Delivery delivery = deliveryService.getById(key);
            if (Objects.isNull(delivery)) {
                throw new CoolException("单据不存在!!");
            }
            AsnOrder order = new AsnOrder();
            BeanUtils.copyProperties(delivery, order);
            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, order);
            if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) {
                throw new CoolException("编码规则错误:请检查 「SYS_OUT_STOCK_CODE」编码是否设置成功");
            }
            order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
                    .setType(delivery.getType())
                    .setWkType(delivery.getWkType())
                    .setCode(ruleCode)
                    .setPoId(delivery.getId())
                    .setId(null)
                    .setUpdateBy(loginUserId)
                    .setCreateBy(loginUserId)
                    .setPoCode(delivery.getCode());
            if (!this.save(order)) {
                throw new CoolException("主单保存失败!!");
            }
            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();
    }