/** set error flag */
 public void doSetErrorFlag(String poNo) {
   NpcSalesDetailInfo sofordb = ascPOConvertTOSoDao.getSODetialsByPo(poNo);
   // 如果是之前跑过的话就不用再设Erro状态了,因为在这之前已经设置过了ReWrongError了
   // 忘记之前为什么没加也能置成X了
   if (null != sofordb
       && !SysConstants.NPC_INTERFACE_STATUS_REWRONG_ERROR.equals(sofordb.getConvertFlag())) {
     sofordb.setConvertFlag(SysConstants.SALE_CONVERT_FLGA_ERROR);
     sofordb.setUpdateBy(-1L);
     sofordb.setUpdateDate(CommonUtil.getCurrentDateWithTimeZone(this.timezone));
     ascPOConvertTOSoDao.updateSODetails(sofordb);
   }
 }
예제 #2
0
  /**
   * Get data in specified PACKAGE_SIZE, send var ftp, update status
   *
   * @throws Exception
   */
  public void doPutBusiness() throws Exception {
    // TODO
    try {
      // 初始化
      init();

      // add by zhangqb 100609
      boolean ret = dao.procedureExecute("p_warranty_claim_job");
      if (!ret) {
        return;
      }

      // 获取数据总数
      countTotal();
      if (totalRecord == 0) {
        return;
      }
      // String identifyId = CommonUtil.createFileIdentifyId();
      String identifyId = CommonUtil.createFileDateIdentifyId();
      AppDataContainer dataContainer = null;
      while (!isFinished()) {
        dataContainer = nextDataPackage();
        try {
          // 发送数据
          sender.writeInfo(dataContainer);
          startTransaction();
          // 修改数据
          updateStatus(dataContainer, identifyId);
          this.commit();
        } catch (Exception e) {
          e.printStackTrace();
          this.rollback();
        } finally {
          this.closeTransaction();
        }
      }

    } catch (Exception e) {
      e.printStackTrace();
    } finally {

      // 发送本地数据文件到FTP服务器
      if (totalRecord > 0) {
        try {
          sender.putInfo();
        } catch (Exception e) {
          e.printStackTrace();
          // 日志出力
        }
      }
    }
  }
  /**
   * @param so
   * @throws Exception
   */
  private void generatePartRequest(NpcSalesDetailInfo so) throws Exception {

    NpcPartInfo parts = npcPartInfoService.findByCode(so.getPartCode());
    // 插入TD_NPC_PARTS_REQUEST表
    NpcPartsRequest npcPartsRequest = new NpcPartsRequest();
    npcPartsRequest.setFormID(so.getSaleNo());
    npcPartsRequest.setSkuType(parts.getSkuType());
    npcPartsRequest.setReqNum(so.getPartNum());
    if (SysConstants.SALES_DETAIL_STATUS_PENDDING.equals(so.getPartStatus())) {
      npcPartsRequest.setReqStat(SysConstants.REQ_STAT_PENDING); // Pending
    } else {
      npcPartsRequest.setReqStat(SysConstants.REQ_STAT_WAITTING_FOR_ALLOCATE); // 零件申请状态
    }

    npcPartsRequest.setPartsCode(so.getPartCode());
    npcPartsRequest.setRequestPartCode(so.getPartCode());

    // npcPartsRequest.setPerCost(new Double(parts.getNpcBasePrice()));//取零件的BasePrice
    // wubin at 20120626. 取Supplier Price
    npcPartsRequest.setPerCost(new Double(parts.getSupplierPrice()));
    npcPartsRequest.setReqType(getReqType(so.getAscPoType().trim()));
    npcPartsRequest.setReqDate(CommonUtil.getCurrentDateWithTimeZone(this.timezone));
    npcPartsRequest.setRequestBy(-1L);
    npcPartsRequest.setCreateBy(-1L);
    npcPartsRequest.setCreateDate(CommonUtil.getCurrentDateWithTimeZone(this.timezone));
    npcPartsRequest.setAscCnsgCode(so.getCustomerCnsgCode());
    npcPartsRequest.setAscUnitCode(so.getCustomerUnitCode());
    npcPartsRequest.setAllocateStatus(
        SysConstants.REQ_THREAD_STATUS_INIT); // 设置PartsRequest线程状态初始状态
    npcPartsRequest.setOrganizationCode(SysConstants.NPC_ORGANIZATION_CODE);
    npcPartsRequest.setAscPoNo(so.getAscPoNo()); // asc po No
    npcPartsRequest.setRemark(so.getRemark());
    // 更新
    ascPOConvertTOSoDao.addNpcPartsRequest(npcPartsRequest);
    so.setRequestId(npcPartsRequest.getReqID()); // 设置 RequestId
  }
예제 #4
0
 /**
  * Query next batch of claim data and return
  *
  * @return AppDataContainer
  */
 public AppDataContainer nextDataPackage() throws Exception {
   AppDataContainer ret = new AppDataBaseContainer();
   List poList =
       dao.list(" from tdInWarrantyClaim t where  t.interfaceStatus='N' ", DATA_PACKAGE_SIZE);
   Iterator it = poList.iterator();
   int i = 0;
   while (it.hasNext()) {
     i++;
     InWarrantyClaimInfo info = new InWarrantyClaimInfo();
     tdInWarrantyClaim iw = (tdInWarrantyClaim) it.next();
     info.setClaimId(iw.getClaimId().toString());
     info.setWarrantyType(iw.getWarrantyType());
     info.setWarrantyCat(iw.getWarrantyCat());
     info.setAscCode(iw.getAscCode() == null ? "" : iw.getAscCode().toString());
     info.setCreatBy(iw.getCreateBy() == null ? "" : iw.getCreateBy().toString());
     info.setCreatDate(
         iw.getCreatDate() == null
             ? ""
             : CommonUtil.formatDate(iw.getCreatDate(), CommonUtil.dateFormat1).toString());
     info.setRegion(iw.getRegion());
     info.setPartFee(iw.getPartFee() == null ? "" : iw.getPartFee().toString());
     info.setLabourFee(iw.getLabourFee() == null ? "" : iw.getLabourFee().toString());
     info.setServiceTax(iw.getServiceTax() == null ? "" : iw.getServiceTax().toString());
     info.setOtherAmount(iw.getOtherAmount() == null ? "" : iw.getOtherAmount().toString());
     info.setOtherTax(iw.getOtherTax() == null ? "" : iw.getOtherTax().toString());
     info.setIsFan(iw.getIsFan());
     info.setServiceType(iw.getServiceType());
     info.setIsCountermeasure(iw.getIsCountermeasure());
     info.setTsdRate(iw.getTsdRate() == null ? "" : iw.getTsdRate().toString());
     info.setMarkupAmount(iw.getMarkupAmount() == null ? "" : iw.getMarkupAmount().toString());
     // wubin at 20110630 增加6D,4D,partTax
     info.setD6_code(iw.getD6_code() == null ? "" : iw.getD6_code().toString());
     info.setD4_code(iw.getD4_code() == null ? "" : iw.getD4_code().toString());
     /*        	 info.setD6_code(iw.getD6_code()==null?"":iw.getD6_code());
     info.setProduct_cat(iw.getProduct_cat()==null?"":iw.getProduct_cat());*/
     info.setRowNum(i);
     ret.addInfo(info);
     processedRecord = processedRecord + 1;
   }
   return ret;
 }
  /** create so */
  public NpcSalesDetailInfo createSO(AscPo po, OrganizationInfo orgInfo) throws Exception {
    NpcSalesDetailInfo so = ascPOConvertTOSoDao.getSODetialsByPo(po.getPoNo());
    if (so == null) { // 第一次发的Po
      // 设置大单信息
      NpcSalesInfo npcSalesInfo = new NpcSalesInfo();
      npcSalesInfo.setSaleNo(npcFormNumberBuilderService.getNpcSONumber(getCurrentCountryDate()));
      ascPOConvertTOSoDao.addSOMain(npcSalesInfo);
      // 设置小单信息

      so = new NpcSalesDetailInfo();
      so.setPartStatus(SysConstants.SALES_DETAIL_STATUS_INITIAL); // 临时状态
      so.setSaleNo(npcSalesInfo.getSaleNo());
      so.setPartCode(po.getPartCode());
      so.setAppPartCode(po.getPartCode());
      so.setPartNum(po.getOrderNum());
      // so.setUnitPrice(po.getPerCost());
      so.setRemark(po.getRemark());
      so.setCreateBy(-1L);
      so.setCreateDate(CommonUtil.getCurrentDateWithTimeZone(this.timezone));
      so.setAscPoNo(po.getPoNo());
      // so.setCustomerOrgCode(po.getOrgCode()+"");//此字段不与数据关联
      so.setScOrgCode(orgInfo.getId());

      String unitCode = orgInfo.getUnitCode();
      if (unitCode == null || "".equals(unitCode)) {
        logger.error(
            "Convert So :Organization unitCode is null or empty country["
                + getCountryCode()
                + "]poNo["
                + po.getPoNo()
                + "]orgCode["
                + orgInfo.getId()
                + "]");
        System.err.println(
            "Convert So :Organization unitCode is null or empty country["
                + getCountryCode()
                + "]poNo["
                + po.getPoNo()
                + "]orgCode["
                + orgInfo.getId()
                + "]");
        return null;
        //			throw new ApplicationRuntimeException("Convert So :Organization unitCode is null or
        // empty poNo["+po.getPoNo()+"]orgCode["+orgInfo.getId()+"]");
      }
      so.setCustomerUnitCode(unitCode); // 只存unitCode不存OrgCdoe So pojo类里的orgCode 不与数据库关连
      so.setCustomerCnsgCode(orgInfo.getShipTo());
      so.setAscPoType(po.getPoType());
      so.setFormCreateDate(CommonUtil.getCurrentDateWithTimeZone(this.timezone));
      so.setShipType(orgInfo.getShipType()); // Asc的ShipType
      so.setIsBackToBack(SysConstants.IS_BACK_TO_BACK_N);
      so.setConsignFlag(SysConstants.CONSIGN_FLAG_Y);
      so.setVersion(0);
      so.setIsPre(SysConstants.SALES_NOTPRE); // 销售  (销售/预销售)
      so.setDiscount(SysConstants.DISCOUNT_ZERO); // 不打折
      so.setDiscountAmt(0D);

      // Stock transfer : If it is ‘SSC TO’, then set ‘Source’ value for ’AT’,else value for
      // ’AP’.(add by huayi)
      if (orgInfo != null) {
        if (SysConstants.DEFAULT_SSC_LEVEL.equals(orgInfo.getAscLevel())) {
          so.setSource(NPCSaleSource.AT.name());
        } else {
          so.setSource(NPCSaleSource.AP.name());
        }
      }

      // for testing.
      if (StringUtils.isBlank(so.getSource())) {
        // so.setSource( NPCSaleSource.M.name() );
        so.setRemark("converso:so.Source is null.");
      }

      // 计算税
      Double sellingPrice =
          markupPrivceQueryService.getCurrentSellingPrice(
              so.getPartCode(),
              so.getCustomerUnitCode() + "",
              SysConstants.CUSTOMER_GRP_ASC.toString()); // 计算价格
      if (sellingPrice == null) {
        logger.error(
            "CalculationsSellingPrice error sellingPrice is null:partCode["
                + so.getPartCode()
                + "]CustomerUnitCode"
                + so.getCustomerUnitCode()
                + "]poNo["
                + po.getPoNo()
                + "]");
        throw new CalculationsSellingPriceRuntimeException(
            "CalculationsSellingPrice error sellingPrice is null:partCode["
                + so.getPartCode()
                + "]CustomerUnitCode"
                + so.getCustomerUnitCode()
                + "]poNo["
                + po.getPoNo()
                + "]");
      }
      if (sellingPrice.doubleValue() == 0) {
        logger.error(
            "CalculationsSellingPrice error sellingPrice is zero:partCode["
                + so.getPartCode()
                + "]CustomerUnitCode"
                + so.getCustomerUnitCode()
                + "]poNo["
                + po.getPoNo()
                + "]");
        throw new CalculationsSellingPriceRuntimeException(
            "CalculationsSellingPrice error sellingPrice is zero:partCode["
                + so.getPartCode()
                + "]CustomerUnitCode"
                + so.getCustomerUnitCode()
                + "]poNo["
                + po.getPoNo()
                + "]");
      }
      Double purchaseAmt =
          MathUtils.multiply(sellingPrice, so.getPartNum().doubleValue()); // TODO用庆哥的方法算
      so.setUnitPrice(sellingPrice);
      so.setTotalPrice(purchaseAmt);
      ArrayList<NpcPartTaxBean> partTaxList = null;
      partTaxList =
          npcPartTaxService.getPartTaxListBean(
              purchaseAmt,
              so.getPartCode(),
              SysConstants.NPC_ORGANIZATION_CODE,
              SysConstants.CUSTOMER_GRP_ASC);
      so.setConvertFlag(SysConstants.SALE_CONVERT_FLGA_IN); // 销售状态为正在处理
      ascPOConvertTOSoDao.addSO(so); // 先保存So之后才能取到SO的Id

      for (NpcPartTaxBean npcPartTaxBean : partTaxList) {
        NpcPartSalesTaxDetail salesTax = new NpcPartSalesTaxDetail();
        salesTax.setCreateBy(-1L);
        salesTax.setCreatedDate(CommonUtil.getCurrentDateWithTimeZone(this.timezone));
        salesTax.setDeletFlag(0);
        salesTax.setSoId(so.getSoId());
        salesTax.setSaleNo(so.getSaleNo());
        salesTax.setTaxAmt(
            RoundingUtil.totalTaxAmtRounding(npcPartTaxBean.getTaxAmt(), super.getCountryCode()));
        salesTax.setTaxCode(npcPartTaxBean.getTaxCode());
        salesTax.setTaxRate(npcPartTaxBean.getTaxRate());
        salesTax.setConvertedTaxRate(npcPartTaxBean.getActualTaxRate());
        ascPOConvertTOSoDao.saveSalesTaxDetail(salesTax); // 插入税表
      }

    } else if (SysConstants.SALE_CONVERT_FLGA_ERROR.equals(so.getConvertFlag())) { // 上次处理Po时发生错误
      // so.setCustomerOrgCode(po.getOrgCode()+"");//此字段不与数据关联所以要重新set一下
      // 加上Update时间
      so.setUpdateDate(CommonUtil.getCurrentDateWithTimeZone(this.timezone));
      so.setUpdateBy(-1L);
      so.setConvertFlag(SysConstants.NPC_INTERFACE_STATUS_REWRONG_ERROR); // 如果是上次处理失败过的这里设置成Rewrond
      ascPOConvertTOSoDao.updateSODetails(so);
      return so;
    } else if (SysConstants.SALE_CONVERT_FLGA_IN.equals(so.getConvertFlag())
        || SysConstants.SALE_CONVERT_FLGA_SUCCESS.equals(so.getConvertFlag())) { // 重复的PO不做处理
      logger.info("Po coverted :" + so.getAscPoNo());
      return null;
    } else if (SysConstants.NPC_INTERFACE_STATUS_REWRONG_ERROR.equals(
        so.getConvertFlag())) { // 如果是Rewrong还出错的话就不做Convert
      logger.info("rewrong error po :" + so.getAscPoNo());
      return null;
    }

    return so;
  }