public void save(FiDeliverycost entity) {
   if (entity.getId() == null) {
     if (entity.getFlightMainNo() != null) {
       List<FiDeliverycost> list =
           find(
               "from FiDeliverycost  fi where fi.flightMainNo=? and fi.customerId=? ",
               entity.getFlightMainNo(),
               entity.getCustomerId());
       if (list.size() > 0) {
         throw new ServiceException("此黄单号已录入,不能重复录入");
       }
     } else {
       throw new ServiceException("录入的黄单号不能为空");
     }
   }
   fiDeliverycostDao.save(entity);
 }
  // 审核
  @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);
  }