Example #1
0
  // 作废EDI临时信息主表
  public void deleteStatusCtTmD(Long dno) throws Exception {
    List<CtTmD> tmdlist = this.ctTmDDao.findBy("DNo", dno + "");

    if (null == dno) {
      throw new ServiceException("配送单号为空!");
    }

    if (null != tmdlist && tmdlist.size() > 0) {
      CtTmD tmd = tmdlist.get(0);
      tmd.setStatus(0l); // 0表示需要删除
      this.ctTmDDao.save(tmd);
    } else {
      CtTmD tmd = new CtTmD();
      OprFaxIn faxIn = this.oprFaxInService.get(dno);
      if (!this.edi_distributionMode.equals(faxIn.getDistributionMode())) {
        throw new ServiceException("配送单号为 " + dno + "的货物不是中转的货物!");
      }
      try {
        tmd.setCtId(Long.valueOf(this.customerService.get(faxIn.getGoWhereId()).getEdiUserId()));
      } catch (Exception e) {
        throw new ServiceException("获取EDI编码获取失败!");
      }

      tmd.setDNo(faxIn.getDno() + "");
      tmd.setStopflag("0");
      tmd.setGoodStatus("1");
      tmd.setOkFlag("0");
      tmd.setSignFlag("0");
      tmd.setExceptionFlag("1"); // 1为否,0为是
      tmd.setIsvaluables("0");
      tmd.setCtName(faxIn.getGowhere());
      tmd.setCubage(faxIn.getBulk());
      tmd.setCustomerServiceName(faxIn.getCustomerService());
      tmd.setDnAmt(faxIn.getConsigneeFee());
      tmd.setDnAmtChange(0d);
      tmd.setEndpayAmt(faxIn.getPaymentCollection());
      tmd.setFlyTime(faxIn.getFlightTime());
      tmd.setGoods(faxIn.getGoods());
      tmd.setPiece(faxIn.getPiece());
      tmd.setReceAdd(faxIn.getAddr());
      tmd.setReceCorp("");
      tmd.setReceMan(faxIn.getConsignee());
      tmd.setReceTel(faxIn.getConsigneeTel());
      tmd.setShfNo(faxIn.getFlightNo());
      tmd.setSustbillNo(faxIn.getSubNo());
      tmd.setTakeMode(faxIn.getTakeMode().trim());
      tmd.setTraAmt(faxIn.getTraFee());
      tmd.setTraCost(faxIn.getTraFeeRate());
      tmd.setWeight(faxIn.getCusWeight());
      tmd.setYdNo(faxIn.getFlightMainNo());
      tmd.setSignType(faxIn.getReceiptType()); // 签单类型
      tmd.setDeptName(faxIn.getInDepartId() == 457l ? "广州" : "深圳");
      tmd.setIsSp(faxIn.getSonderzug() == null ? "0" : faxIn.getSonderzug() + ""); // 是否专车
      tmd.setIsurgent(
          faxIn.getUrgentService() == null ? "0" : faxIn.getUrgentService() + ""); // 是否加急
      tmd.setStatus(0l); // STATUS 1:正常,0:保存时,需要删除的判断依据

      this.save(tmd);
    }
  }
  // 审核
  @ModuleName(value = "提货成本管理会计审核", logType = LogType.fi)
  public void saveFiAudit(List<FiDeliverycost> list, User user) throws Exception {
    List<Long> fiDelivAll = new ArrayList<Long>(); // 审核的ID集合
    for (FiDeliverycost fd : list) {
      fiDelivAll.add(fd.getId());
    }

    List<FiDeliverycost> listDliv = new ArrayList<FiDeliverycost>();
    for (FiDeliverycost fiDeliverycost : list) {
      FiDeliverycost fiDeliverycost2 = get(fiDeliverycost.getId());
      fiDeliverycost2.setTs(fiDeliverycost.getTs());
      //	save(fiDeliverycost2);                               //验证时间戳
      listDliv.add(fiDeliverycost2);
    }

    FiDeliverycost fiDecost = get(list.get(0).getId());
    if (fiDecost == null) {
      throw new ServiceException("记录已不存在");
    }
    Long cusLong = fiDecost.getCustomerId();
    String cusString = fiDecost.getCustomerName();
    Long batchNo = fiDeliverycostExcelService.getBatchNO(1l);
    Double totalMoney = 0.0;

    for (FiDeliverycost fiDeliverycost : listDliv) {
      if (fiDeliverycost == null) {
        throw new ServiceException("记录已不存在");
      }
      if (fiDeliverycost.getMatStatus() == null || fiDeliverycost.getMatStatus() == 0) {
        throw new ServiceException("存在未匹配的数据,不能审核");
      }
      if (!cusLong.equals(fiDeliverycost.getCustomerId())) {
        throw new ServiceException("不同提货公司不能一起审核");
      }
      if (fiDeliverycost.getStatus() != null && fiDeliverycost.getStatus() == 1l) {
        throw new ServiceException("存在记录已审核,请重新查询后再提交记录审核");
      } else {
        totalMoney = DoubleUtil.add(fiDeliverycost.getAmount(), totalMoney);
        fiDeliverycost.setReviewDept(user.get("departName").toString());
        fiDeliverycost.setReviewDate(new Date());
        fiDeliverycost.setReviewUser(user.get("name").toString());
        fiDeliverycost.setBatchNo(batchNo);
        fiDeliverycost.setStatus(1l);
        save(fiDeliverycost); // 更新会计审核信息

        List<Long> listFid = getPksByIds(fiDeliverycost.getFaxId());
        if (listFid.size() == 1) { // 保存黄单多对一的ID集合,用来判断是否一次全部取消匹配
          List<FiDeliverycost> lisd =
              find(
                  "from FiDeliverycost  fd where fd.departId=? and fd.faxId=? and  fd.id<> ? ",
                  fiDeliverycost.getDepartId(),
                  fiDeliverycost.getFaxId(),
                  fiDeliverycost.getId());
          List<Long> idsLongList = new ArrayList<Long>();
          for (FiDeliverycost fiDt2 : lisd) {
            idsLongList.add(fiDt2.getId());
          }
          if (!fiDelivAll.containsAll(idsLongList)) {
            throw new ServiceException("存在多条黄单记录匹配一条主单号的记录,请一起审核");
          }
        }

        // 主单处理
        for (Long faxIdLong : listFid) {
          OprFaxMain fiMain = oprFaxMainService.get(faxIdLong);
          // 标记此主单的成本已分摊
          if (fiMain.getCostAuditStatus() == 1l) {
            continue;
          } else {
            fiMain.setCostAuditStatus(1l);
          }
          oprFaxMainService.save(fiMain);

          List<OprFaxIn> listFax =
              oprFaxInDao.find(
                  " from OprFaxIn o where o.faxMainId=?  and o.status=1 ", fiMain.getId());
          double doubv = fiDeliverycost.getAmount();
          // 保存到成本表中
          for (int i = 0; i < listFax.size(); i++) {
            OprFaxIn oprFaxIn = listFax.get(i);
            FiCost fiCost = new FiCost();
            fiCost.setDno(oprFaxIn.getDno());
            fiCost.setCostType("提货成本");
            fiCost.setCostTypeDetail(oprFaxIn.getTakeMode());
            if ((listFax.size() - 1) == i) {
              fiCost.setCostAmount(doubv);

              oprHistoryService.saveLog(
                  oprFaxIn.getDno(), "提货成本审核,审核支付金额:" + doubv, log_auditCost); // 操作日志
            } else {
              double dou2 = DoubleUtil.div(fiDeliverycost.getAmount(), listFax.size(), 2);
              fiCost.setCostAmount(dou2);
              oprHistoryService.saveLog(
                  oprFaxIn.getDno(), "提货成本审核,审核支付金额:" + dou2, log_auditCost); // 操作日志

              doubv = DoubleUtil.sub(doubv, dou2);
            }
            fiCost.setSourceSignNo(fiDeliverycost.getId() + "");
            fiCost.setDataSource("提货成本");
            fiCostService.save(fiCost);
          }
        }
      }
    }

    /*
    //财务接口
    List<FiInterfaceProDto> listfiInterfaceDto =new ArrayList<FiInterfaceProDto>();
    FiInterfaceProDto fiIn = new FiInterfaceProDto();
    fiIn.setCustomerId(cusLong);
    fiIn.setCustomerName(cusString);
    fiIn.setDistributionMode("客商");
    fiIn.setSettlementType(2l);
    fiIn.setDocumentsType("成本");
    fiIn.setDocumentsSmalltype("提货对账单");
    fiIn.setDocumentsNo(batchNo);
    fiIn.setAmount(totalMoney);
    fiIn.setCostType("对账");
    fiIn.setDepartId(Long.parseLong(user.get("departId")+""));
    fiIn.setSourceData("提货成本");
    fiIn.setSourceNo(batchNo);
    fiIn.setCreateRemark("支付"+cusString+"提货费"+totalMoney+"元");
    listfiInterfaceDto.add(fiIn);
    fiInterfaceImpl.reconciliationToFiPayment(listfiInterfaceDto);*/
    // fiInterfaceImpl.addFinanceInfo(listPro);
  }
  public List<? extends PrintBean> setPrintBeanList(
      BillLadingList mainbill, Map<String, String> map) {
    List<PrintBean> list = new ArrayList<PrintBean>();

    String dno = map.get("dno");
    String changeNo = map.get("changeNo");

    if (null == map.get("changeNos") || "".equals(map.get("changeNos").trim())) {
      mainbill.setMsg("请传更改明细单号过来!");
      return list;
    }
    if (null == changeNo || "".equals(changeNo)) {
      mainbill.setMsg("请传更改单号过来!");
      return list;
    }
    if (null == dno || "".equals(dno)) {
      mainbill.setMsg("请传配送单号过来!");
      return list;
    }
    String changeNos[] = map.get("changeNos").split(",");
    OprChangeMain changeMain = this.oprFaxChangeDao.get(Long.valueOf(changeNo));
    if (null == changeMain) {
      mainbill.setMsg("更改单号有误,没有找到该更改单号!");
      return list;
    }
    OprFaxIn fax = this.oprFaxInDao.get(changeMain.getDno());
    if (null == fax) {
      mainbill.setMsg("没有找到对应的传真记录!");
      return list;
    }
    OprChangeDetail detail = null;
    OprFaxChangeBean bean = null;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm ss");
    SimpleDateFormat sdfPrint = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 打印格式
    User user = WebRalasafe.getCurrentUser(ServletActionContext.getRequest());
    Iterator<OprChangeDetail> itr = changeMain.getOprChangeDetail().iterator();
    while (itr.hasNext()) {
      detail = itr.next();
      boolean bool = false;
      for (int i = 0; i < changeNos.length; i++) {

        if (detail.getId().equals(Long.valueOf(changeNos[i]))) {
          bool = true;
          break;
        }
      }
      if (!bool) {
        continue;
      }

      bean = new OprFaxChangeBean();
      bean.setChangeContent(
          "原 "
              + detail.getChangeFieldZh()
              + " 为:"
              + detail.getChangePre()
              + "   现改为:"
              + detail.getChangePost());
      try {
        bean.setChangeDate(sdf.format(changeMain.getCreateTime()));
      } catch (Exception e) {
        mainbill.setMsg("更改申请主表创建时间有误!");
        logger.debug("更改申请主表创建时间有误!");
      }
      bean.setChangeDepart(changeMain.getDepartName() == null ? "" : changeMain.getDepartName());
      bean.setChangeName(changeMain.getCreateName() == null ? "" : changeMain.getCreateName());
      bean.setChangeNo(changeNo);
      bean.setChangeTitle("配送中心更改通知单"); // 设置标题
      bean.setConsignee(fax.getConsignee() == null ? "" : fax.getConsignee());
      bean.setCusName(fax.getCpName() == null ? "" : fax.getCpName());
      bean.setDistributionMode(fax.getDistributionMode() == null ? "" : fax.getDistributionMode());
      bean.setDno(fax.getDno() + "");
      bean.setFlightMainNo(fax.getFlightMainNo() == null ? "" : fax.getFlightMainNo());
      bean.setSubNo(fax.getSubNo() == null ? "" : fax.getSubNo());
      bean.setGoWhere(fax.getRealGoWhere() == null ? "" : fax.getRealGoWhere());
      bean.setPayWay(fax.getWhoCash() == null ? "" : fax.getWhoCash());
      bean.setPiece(fax.getPiece() == null ? "0" : fax.getPiece() + "");
      bean.setTakeMode(fax.getTakeMode() == null ? "" : fax.getTakeMode());
      bean.setWeight(fax.getCqWeight() == null ? "0" : fax.getCqWeight() + ""); // 重量
      bean.setWeightFee(fax.getCusWeight() == null ? "" : fax.getCusWeight() + ""); // 计费重量
      bean.setXbwlImagePath(this.print_fax_change_img); // 设置图片路径

      bean.setPrintId("");
      bean.setPrintName(user.get("name") + "");
      bean.setPrintNum(1l);
      bean.setPrintTime(sdfPrint.format(new Date())); // 打印时间
      bean.setSourceNo(changeNo);

      list.add(bean);
    }
    return list;
  }