コード例 #1
0
  public DeliveryOrder createDeliveryOrder(List<PurchaseOrderDetail> purchaseOrderDetailList)
      throws IllegalAccessException, InvocationTargetException {

    DeliveryOrder deliveryOrder = null;
    PurchaseOrder purchaseOrder = null;
    for (int i = 0; i < purchaseOrderDetailList.size(); i++) {
      PurchaseOrderDetail purchaseOrderDetail = purchaseOrderDetailList.get(i);

      if (deliveryOrder == null) {
        purchaseOrder = purchaseOrderDetail.getPurchaseOrder();
        deliveryOrder = new DeliveryOrder();
        BeanUtils.copyProperties(deliveryOrder, purchaseOrder);

        deliveryOrder.setDoNo(
            this.numberControlManager.generateNumber(
                purchaseOrder.getPlantSupplier().getDoNoPrefix(), 10));
        deliveryOrder.setExternalDoNo(deliveryOrder.getDoNo());
        deliveryOrder.setCreateDate(new Date());
        deliveryOrder.setIsExport(false);
        deliveryOrder.setIsPrint(false);
        deliveryOrder.setIsRead(false);
        deliveryOrder.setStatus("Create");
      }

      DeliveryOrderDetail deliveryOrderDetail = new DeliveryOrderDetail();
      BeanUtils.copyProperties(deliveryOrderDetail, purchaseOrderDetail);

      deliveryOrderDetail.setDeliveryOrder(deliveryOrder);
      deliveryOrderDetail.setUnitCount(purchaseOrderDetail.getItem().getUnitCount());
      deliveryOrderDetail.setQty(purchaseOrderDetail.getCurrentShipQty());
      // deliveryOrderDetail.setOrderQty(purchaseOrderDetail.getQty());
      deliveryOrderDetail.setReferenceOrderNo(purchaseOrderDetail.getPurchaseOrder().getPoNo());
      deliveryOrderDetail.setReferenceSequence(purchaseOrderDetail.getSequence());
      deliveryOrderDetail.setPurchaseOrderDetail(purchaseOrderDetail);
      deliveryOrder.addDeliveryOrderDetail(deliveryOrderDetail);

      // if (purchaseOrderDetail.getShipQty() == null) {
      // purchaseOrderDetail.setShipQty(BigDecimal.ZERO);
      // }
      //
      // purchaseOrderDetail.setShipQty(purchaseOrderDetail.getShipQty().add(purchaseOrderDetail.getCurrentShipQty()));

      this.purchaseOrderDetailManager.save(purchaseOrderDetail);
    }

    // this.purchaseOrderManager.tryClosePurchaseOrder(purchaseOrder.getPoNo());
    this.save(deliveryOrder);

    return deliveryOrder;
  }
コード例 #2
0
  private DeliveryOrder parseDelivery(ManifestFile.Delivery delivery, Plant plant, String fileId)
      throws DataConvertException {
    DateFormat dtFormat = new SimpleDateFormat("yyyyMMddHHmmss");

    ManifestFile.Delivery.Recheader header = delivery.getRecheader().get(0);
    DeliveryOrder deliveryOrder = new DeliveryOrder();
    deliveryOrder.setFileIdentitfier(fileId);

    try {
      String supplierCode = header.getSUCODE();
      Supplier supplier = null;

      try {
        // 供应商号如果是全数字,则要把前置0去掉
        supplierCode = Long.toString((Long.parseLong(supplierCode)));
      } catch (NumberFormatException ex) {
      }

      try {
        supplier = this.supplierManager.get(supplierCode); // supplier
      } catch (ObjectRetrievalFailureException ex) {
        log.info(
            "Supplier not found with the given supplier code: "
                + supplierCode
                + ", try to create a new one.");

        supplier = new Supplier();
        supplier.setCode(supplierCode);
        supplier.setName(header.getSUNAME());

        supplier = this.supplierManager.save(supplier);

        log.info("Creating supplier user account.");
        // 生成供应商帐号
        User supplierUser = new User();
        supplierUser.setUsername(supplier.getCode()); // 使用供应商编码作为用户名称
        supplierUser.setEnabled(true);
        supplierUser.setAccountExpired(false);
        supplierUser.setAccountLocked(false);
        supplierUser.setEmail(plant.getSupplierNotifyEmail());
        supplierUser.setPassword(RandomStringUtils.random(6, true, true));
        supplierUser.setConfirmPassword(supplierUser.getPassword());
        supplierUser.setFirstName(
            supplier.getName() != null ? supplier.getName() : supplier.getCode());
        // supplierUser.setLastName(supplier.getName() != null ?
        // supplier.getName() : supplier.getCode());
        supplierUser.setLastName("");
        supplierUser.setUserSupplier(supplier);
        // supplierUser.setUserPlant(plant);
        Set<Role> roles = new HashSet<Role>();
        roles.add(roleManager.getRole(Constants.VENDOR_ROLE));
        supplierUser.setRoles(roles);
        this.userManager.saveUser(supplierUser);

        try {
          // Email通知
          log.info("Send supplier created email to " + plant.getSupplierNotifyEmail());
          mailMessage.setTo(plant.getSupplierNotifyEmail());
          Map<String, Object> model = new HashMap<String, Object>();
          model.put("supplier", supplier);
          model.put("user", supplierUser);
          mailMessage.setSubject("Supplier " + supplier.getCode() + " Created");
          mailEngine.sendMessage(mailMessage, supplierCreatedTemplateName, model);
          log.info("Send supplier created email successful.");
        } catch (MailException mailEx) {
          log.error("Error when send supplier create mail.", mailEx);
        }
      }

      PlantSupplier plantSupplier = this.plantSupplierManager.getPlantSupplier(plant, supplier);

      if (plantSupplier == null) {
        log.info(
            "The relationship between Plant: "
                + plant.getCode()
                + " and Supplier: "
                + supplier.getCode()
                + " not found, try to create a new one.");

        plantSupplier = new PlantSupplier();
        plantSupplier.setSupplierName(header.getSUNAME());
        plantSupplier.setSupplierAddress1(header.getSUPADDR1());
        plantSupplier.setSupplierAddress2(header.getSUPADDR2());
        plantSupplier.setSupplierContactPerson(header.getSUCONTACT());
        plantSupplier.setSupplierPhone(header.getSUPTEL());
        plantSupplier.setSupplierFax(header.getSUFAX());
        plantSupplier.setPlant(plant);
        plantSupplier.setSupplier(supplier);
        plantSupplier.setDoNoPrefix(
            String.valueOf(this.numberControlManager.getNextNumber(Constants.DO_NO_PREFIX)));

        PlantScheduleGroup defaultPlantScheduleGroup =
            this.plantScheduleGroupManager.getDefaultPlantScheduleGroupByPlantCode(plant.getCode());
        if (defaultPlantScheduleGroup != null) {
          plantSupplier.setPlantScheduleGroup(defaultPlantScheduleGroup);
        }

        plantSupplier = this.plantSupplierManager.save(plantSupplier);
      }

      deliveryOrder.setPlantSupplier(plantSupplier);
      deliveryOrder.setDoNo(
          this.numberControlManager.generateNumber(plantSupplier.getDoNoPrefix(), 10));
      deliveryOrder.setExternalDoNo(header.getMANCODE());
      deliveryOrder.setPlantName(header.getFAUPLANT());
      deliveryOrder.setPlantAddress1(header.getFAUADDR1());
      deliveryOrder.setPlantAddress2(header.getFAUADDR2());
      deliveryOrder.setPlantAddress3(header.getFAUADDR3());
      deliveryOrder.setPlantContactPerson(header.getFAUCONTACT());
      deliveryOrder.setPlantPhone(header.getFAUTEL());
      deliveryOrder.setPlantFax(header.getFAUFAX());
      deliveryOrder.setPlantPostCode(header.getPOSTCODE());
      deliveryOrder.setPlantCity(header.getCITY());
      deliveryOrder.setPlantCountry(header.getFAUCTRY());
      deliveryOrder.setSupplierName(header.getSUNAME());
      deliveryOrder.setSupplierAddress1(header.getSUPADDR1());
      deliveryOrder.setSupplierAddress2(header.getSUPADDR2());
      deliveryOrder.setSupplierAddress3(header.getSUPADDR3());
      deliveryOrder.setSupplierContactPerson(header.getSUCONTACT());
      deliveryOrder.setSupplierPhone(header.getSUPTEL());
      deliveryOrder.setSupplierFax(header.getSUFAX());
      deliveryOrder.setSupplierPostCode(header.getSUPPCOD());
      deliveryOrder.setSupplierCity(header.getSUPCITY());
      deliveryOrder.setSupplierCountry(header.getSUPCTRY());
      deliveryOrder.setCreateDate(new Date());
      try {
        deliveryOrder.setStartDate(dtFormat.parse(header.getPICKUP()));
      } catch (Exception ex) {
        log.warn("Error when convert PICKUP into datetime.", ex);
        deliveryOrder.setStartDate(null);
      }
      try {
        deliveryOrder.setEndDate(dtFormat.parse(header.getRECEPT()));
      } catch (Exception ex) {
        log.warn("Error when convert RECEPT into datetime.", ex);
        deliveryOrder.setEndDate(null);
      }
      deliveryOrder.setIsExport(false);
      deliveryOrder.setIsPrint(false);
      deliveryOrder.setIsRead(false);
      deliveryOrder.setFirstReadDate(null);
      deliveryOrder.setStatus("Confirm");
      deliveryOrder.setMurn(header.getMURN());
      deliveryOrder.setOrderGroup(header.getORDERG());
      deliveryOrder.setDeliveryOrderGroup(header.getDELORDGR());
      deliveryOrder.setDock(header.getFDCODE());
      deliveryOrder.setRoute(header.getROUTE());
      deliveryOrder.setMainRoute(header.getMROUTE());
      try {
        deliveryOrder.setTotalWeight(new BigDecimal(header.getTOTWEIGHT()));
      } catch (Exception ex) {
        log.warn("Error when convert TOTWEIGHT into decimal.", ex);
      }
      deliveryOrder.setUnitWeight(header.getUNITWEIGHT());
      try {
        deliveryOrder.setTotalVolume(new BigDecimal(header.getTOTVOL()));
      } catch (Exception ex) {
        log.warn("Error when convert TOTVOL into decimal.", ex);
      }
      deliveryOrder.setUnitVolume(header.getUNITVOL());
      try {
        deliveryOrder.setTotalNbPallets(new BigDecimal(header.getTOTPAL()));
      } catch (Exception ex) {
        log.warn("Error when convert TOTPAL into decimal.", ex);
      }
      deliveryOrder.setTitle(header.getMANTITLE());

      int i = 0;
      for (ManifestFile.Delivery.Recpos recpos : delivery.getRecpos()) {
        i++;

        String itemCode = recpos.getPNUMBER();
        try {
          // 零件号如果是全数字,则要把前置0去掉
          itemCode = Long.toString((Long.parseLong(itemCode)));
        } catch (NumberFormatException ex) {
        }

        Item item = this.itemManager.getItemByPlantAndItem(plant, itemCode);
        String itemDescription = recpos.getDESC();

        if (item == null) {
          log.info(
              "Item not found with the given item code: "
                  + itemCode
                  + ", try to create a new one.");

          item = new Item();
          item.setCode(itemCode);
          item.setDescription(itemDescription);
          item.setPlant(plant);
          item.setUom("");

          item = this.itemManager.save(item);
        }

        DeliveryOrderDetail detail = new DeliveryOrderDetail();
        detail.setDeliveryOrder(deliveryOrder);
        detail.setItem(item);
        detail.setItemDescription(itemDescription);
        try {
          detail.setLabel(Integer.parseInt(recpos.getLABELID()));
        } catch (Exception ex) {
          log.warn("Error when convert LABELID into int.", ex);
        }
        try {
          detail.setOrderLot(new BigDecimal(recpos.getOLOT()));
        } catch (Exception ex) {
          log.warn("Error when convert OLOT into decimal.", ex);
        }
        detail.setSequence(String.valueOf(i));
        detail.setReferenceSequence(StringUtil.leftPad(String.valueOf(i), 4, '0'));
        try {
          detail.setUnitCount(new BigDecimal(recpos.getPCSPU()));
        } catch (Exception ex) {
          log.warn("Error when convert PCSPU into decimal.", ex);
        }
        try {
          detail.setIndice(Integer.parseInt(recpos.getPNUMIND()));
        } catch (Exception ex) {
          log.warn("Error when convert PNUMIND into int.", ex);
        }
        try {
          detail.setBoxCount(new BigDecimal(recpos.getNBPU()));
        } catch (Exception ex) {
          log.warn("Error when convert NBPU into decimal.", ex);
        }
        if (detail.getUnitCount() != null && detail.getBoxCount() != null) {
          detail.setOrderedQty(detail.getUnitCount().multiply(detail.getBoxCount()));
          detail.setQty(detail.getOrderedQty());
        }
        detail.setUom(item.getUom());
        detail.setPackageType(recpos.getPACKTYPE());
        detail.setSebango(recpos.getSEBANGO());
        detail.setStorageCode(recpos.getSCODE());
        deliveryOrder.addDeliveryOrderDetail(detail);
      }

      return deliveryOrder;
    } catch (Exception e) {
      throw new DataConvertException(e, deliveryOrder);
    }
  }