Example #1
0
  @Override
  @Transactional
  public ResponseBaseEntity<ReportAnalysisAppVo> getReportAnalysisInfos(
      ReportAnalysisAppVo reportAnalysisAppVo, String loginName) {
    ResponseBaseEntity<ReportAnalysisAppVo> responseBaseEntity =
        new ResponseBaseEntity<ReportAnalysisAppVo>();
    // 自定义报表数据结果
    ReportAnalysisAppVo result = new ReportAnalysisAppVo();
    // 当前用户角色
    String roleCode = reportAnalysisAppMapper.getRoleCodeByUserCode(loginName);
    // 设置默认值
    if (StringUtil.isEmpty(reportAnalysisAppVo.getOrgType())) {
      // 当前用户角色
      // 组织权限菜单
      List<ReportAnalysisAuthEntity> reportAnalysisAuthEntity =
          this.getReportAnalysisAuthByRoleCode(roleCode);
      result.setReportAnalysisAuthEntities(reportAnalysisAuthEntity);
      reportAnalysisAppVo.setOrgType(reportAnalysisAuthEntity.get(0).getFunctionCode());
      reportAnalysisAppVo.setDataTypeBySort(BseConstants.REPORT_ANALYSIS_DATATYPE_CUSTOMER_DESC);
      reportAnalysisAppVo.setTimeType(BseConstants.REPORT_ANALYSIS_TIMETYPE_CURWEEK);
    }
    String[] strs = reportAnalysisAppVo.getDataTypeBySort().split("-");
    // 数据类型
    String dataType = strs[0];
    // 排序规则
    String sortType = BseConstants.getSortKey(strs[1]);
    String orgType = reportAnalysisAppVo.getOrgType();
    // 查询参数
    Map<String, String> params = new HashMap<String, String>();
    // 组织
    params.put("dataType", dataType);
    params.put("timeType", reportAnalysisAppVo.getTimeType());
    params.put("sortType", sortType);
    params.put("orgType", orgType);

    // 分页
    RowBounds rb = new RowBounds(reportAnalysisAppVo.getStart(), reportAnalysisAppVo.getLimit());

    // 当前用户
    UserEntity currentUser = iLoginService.getUserByLoginName(loginName);
    Set<String> functions = currentUser.getFunctionCodes();
    String deptCode = "";
    if (currentUser.getEmpEntity().getDeptEntity() != null) {
      deptCode = currentUser.getEmpEntity().getDeptEntity().getDeptCode();
    }

    // 判断所在百分比计算调用哪个存储过程,全部数据已生成好
    if (!functions.contains(BseConstants.REPORT_ANALYSIS_ALLDATA)) {
      if (BseConstants.REPORT_ANALYSIS_ORGTYPE_SALE.equals(reportAnalysisAppVo.getOrgType())) {
        params.put("procName", BseConstants.REPORT_ANALYSIS_PERCENT_EXEC_SALE);
      } else {
        params.put("procName", BseConstants.REPORT_ANALYSIS_PERCENT_EXEC);
      }
    }
    // 百分比取值
    if (functions.contains(BseConstants.REPORT_ANALYSIS_ALLDATA)) {
      // 全部数据直接取值
      params.put("percent", BseConstants.REPORT_ANALYSIS_PERCENT_3);
    } else if (BseConstants.REPORT_ANALYSIS_ORGTYPE_BUSINESS.equals(
        reportAnalysisAppVo.getOrgType())) {
      // 事业部
      params.put("supOrgCode", BseConstants.GROUPCODE);
      params.put("percent", BseConstants.REPORT_ANALYSIS_PERCENT_2);
      reportAnalysisAppMapper.execPercent(params);
    } else if (this.isDefaultOrgType(reportAnalysisAppVo.getOrgType(), roleCode)) {
      // 团队经理或者客户经理,上级部门取值--当前部门编码
      if (BseConstants.TERMMANAGE_CODE.equals(roleCode)
          || BseConstants.convertJobCode(BseConstants.MANAGENAME).equals(roleCode)) {
        params.put("supOrgCode", deptCode);
        params.put("percent", BseConstants.REPORT_ANALYSIS_PERCENT_2);
      } else {
        // 上级部门取值 -- 当前部门上级部门编码
        params.put("supOrgCode", currentUser.getEmpEntity().getDeptEntity().getSupdeptCode());
        params.put("percent", BseConstants.REPORT_ANALYSIS_PERCENT_2);
      }
      reportAnalysisAppMapper.execPercent(params);
    } else {
      // 非默认管理区域
      params.put("supOrgCode", deptCode);
      params.put("percent", BseConstants.REPORT_ANALYSIS_PERCENT_2);
      reportAnalysisAppMapper.execPercent(params);
    }

    // 查询数据,上级部门赋值
    if (BseConstants.REPORT_ANALYSIS_ORGTYPE_SALE.equals(reportAnalysisAppVo.getOrgType())
        && !functions.contains(BseConstants.REPORT_ANALYSIS_ALLDATA)) {
      params.put("sale", deptCode);
    } else if (this.isDefaultOrgType(reportAnalysisAppVo.getOrgType(), roleCode)
        && functions.contains(BseConstants.REPORT_ANALYSIS_ALLDATA)) {
      params.put("orgParent", BseConstants.GROUPCODE);
    } else if (this.isDefaultOrgType(reportAnalysisAppVo.getOrgType(), roleCode)) {
      params.put("orgParent", currentUser.getEmpEntity().getDeptEntity().getSupdeptCode());
    } else if (!this.isDefaultOrgType(reportAnalysisAppVo.getOrgType(), roleCode)
        && !functions.contains(BseConstants.REPORT_ANALYSIS_ALLDATA)) {
      params.put("orgParent", deptCode);
    }

    // 是否能点击
    if (BseConstants.REPORT_ANALYSIS_ORGTYPE_STORE.equals(reportAnalysisAppVo.getOrgType())
        || BseConstants.REPORT_ANALYSIS_ORGTYPE_SALE.equals(reportAnalysisAppVo.getOrgType())) {
      params.put("isClick", BseConstants.NO);
    } else if (BseConstants.REPORT_ANALYSIS_ORGTYPE_ROAD.equals(reportAnalysisAppVo.getOrgType())
        && (BseConstants.REPORT_ANALYSIS_DATATYPE_VISIT_ASC.equals(
                reportAnalysisAppVo.getDataTypeBySort())
            || BseConstants.REPORT_ANALYSIS_DATATYPE_VISIT_DESC.equals(
                reportAnalysisAppVo.getDataTypeBySort()))) {
      // 管理区域--路区,统计纬度--门店走访
      params.put("isClick", BseConstants.NO);
    } else if (functions.contains(BseConstants.REPORT_ANALYSIS_ALLDATA)) {
      params.put("isClick", BseConstants.YES);
    } else if (!this.isDefaultOrgType(reportAnalysisAppVo.getOrgType(), roleCode)) {
      params.put("isClick", BseConstants.YES);
    } else {
      params.put("deptCode", currentUser.getEmpEntity().getDeptEntity().getDeptCode());
    }

    List<ReportAnalysisEntity> list = reportAnalysisAppMapper.getReportAnalysisInfos(params, rb);
    // orgType在当前角色菜单中的排序
    for (ReportAnalysisEntity obj : list) {
      // 客户经理查询负责人和负责人电话
      if (BseConstants.REPORT_ANALYSIS_ORGTYPE_SALE.equals(obj.getOrgType())) {
        Map<String, String> saleInfo = reportAnalysisAppMapper.getManagerInfo(obj.getOrgCode());
        if (saleInfo != null) {
          obj.setManagerName(saleInfo.get("empname"));
          obj.setManagerCellphone(saleInfo.get("mobile"));
        }
      }
      // 当前管理区域在当前用户角色中排序号
      obj.setSortNum(this.getSortNumInMenu(loginName, obj.getOrgType(), null, null));
      // 是否数据顶部
      obj.setHead(BseConstants.YES);
      // 人均是否隐藏
      if (BseConstants.REPORT_ANALYSIS_ORGTYPE_STORE.equals(orgType)
          || BseConstants.REPORT_ANALYSIS_ORGTYPE_SALE.equals(orgType)
          || (BseConstants.REPORT_ANALYSIS_ORGTYPE_ROAD.equals(orgType)
              && (BseConstants.REPORT_ANALYSIS_DATATYPE_VISIT_ASC.equals(
                      reportAnalysisAppVo.getDataTypeBySort())
                  || BseConstants.REPORT_ANALYSIS_DATATYPE_VISIT_DESC.equals(
                      reportAnalysisAppVo.getDataTypeBySort())))) {
        obj.setHidden(BseConstants.YES);
      }
    }
    // 上级部门和组织名称
    if (BseConstants.REPORT_ANALYSIS_ORGTYPE_SALE.equals(reportAnalysisAppVo.getOrgType())
        && !functions.contains(BseConstants.REPORT_ANALYSIS_ALLDATA)) {
      result.setSupOrgCode(deptCode);
      result.setOrgName(this.getOrgName(deptCode));
    } else if (this.isDefaultOrgType(reportAnalysisAppVo.getOrgType(), roleCode)
        && functions.contains(BseConstants.REPORT_ANALYSIS_ALLDATA)) {
      result.setSupOrgCode(BseConstants.GROUPCODE);
      result.setOrgName(this.getOrgName(BseConstants.GROUPCODE));
    } else if (this.isDefaultOrgType(reportAnalysisAppVo.getOrgType(), roleCode)) {
      result.setSupOrgCode(currentUser.getEmpEntity().getDeptEntity().getSupdeptCode());
      result.setOrgName(
          this.getOrgName(currentUser.getEmpEntity().getDeptEntity().getSupdeptCode()));
    } else if (!this.isDefaultOrgType(reportAnalysisAppVo.getOrgType(), roleCode)
        && !functions.contains(BseConstants.REPORT_ANALYSIS_ALLDATA)) {
      result.setSupOrgCode(deptCode);
      result.setOrgName(this.getOrgName(deptCode));
    } else if (functions.contains(BseConstants.REPORT_ANALYSIS_ALLDATA)) {
      result.setSupOrgCode(BseConstants.GROUPCODE);
      result.setOrgName(this.getOrgName(BseConstants.GROUPCODE));
    }

    result.setOrgType(orgType);
    result.setReportAnalysisEntities(list);
    result.setTotalCount(reportAnalysisAppMapper.countReportAnalysisInfos(params, rb));

    responseBaseEntity.setResult(result);
    responseBaseEntity.setErrorCode(AppUtil.EXCEPTION_STATUS_SUCCESS);
    return responseBaseEntity;
  }