package com.product.server.report.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.product.admin.service.CodeService; import com.product.admin.service.UpdateLoginUserInfoService; import com.product.common.lang.StringUtils; import com.product.core.cache.DataPoolCacheImpl; import com.product.core.config.CoreConst; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; import com.product.core.exception.BaseException; import com.product.core.service.support.AbstractBaseService; import com.product.core.service.support.QueryFilterService; import com.product.core.spring.context.SpringMVCContextHolder; import com.product.core.transfer.Transactional; import com.product.server.report.config.CmnConst; import com.product.server.report.config.ReportCode; import com.product.server.report.service.idel.IReportConfigService; import com.product.util.BaseUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.xml.crypto.Data; import java.util.*; @Component public class ReportConfigService extends AbstractBaseService implements IReportConfigService { @Autowired BaseDao baseDao; @Autowired CodeService codeService; @Autowired public QueryFilterService queryFilterService; @Autowired public DataListReportService dataListReportService; /** * 报表列表 * * @param cpage * @param pageSize * @return */ public DataTableEntity listReportConfig(Integer cpage, Integer pageSize, FieldSetEntity fse) { cpage = cpage == null ? 1 : cpage; pageSize = pageSize == null ? 20 : pageSize; List paramList = Lists.newArrayList(); StringBuilder sql = new StringBuilder(512); String queryFilter = " "; if(!BaseUtil.dataTableIsEmpty(fse.getSubDataTable("systemSeniorQueryString"))){ queryFilter ="AND"+ queryFilterService.getQueryFilter(fse); } sql.append("\nSELECT a.uuid,a.type_uuid,a.is_valid,a.org_level_uuid,a.report_name,b.type_name,b.type_group") .append("\nFROM product_sys_report_config a") .append("\nLEFT JOIN product_sys_report_type_config b ON a.type_uuid = b.uuid") .append("\nwhere (function_uuid is null or function_uuid='') ") .append(queryFilter); if (!StringUtils.isEmpty(fse.getString(CmnConst.TYPE_UUID))) { sql.append("\nand b.type_group=? "); paramList.add(fse.getString(CmnConst.TYPE_UUID)); } return baseDao.listTable(sql.toString(), paramList.toArray(), pageSize, cpage); } /** * 报表详情 * * @param uuid * @return */ public FieldSetEntity findReportConfig(String uuid) { StringBuilder sql = new StringBuilder(256); sql.append("\nselect report_area,cell_position_y,cell_position_x,attribute_name,report_type_attr_value") .append("\nfrom (") .append("\n select report_area,cell_position_y,cell_position_x,report_type_attr_value,report_type_attr FROM product_sys_report_config_attribute ca") .append("\n where report_config_uuid=?") .append("\n) ca") .append("\nleft join (") .append("\n select uuid,attribute_name FROM product_sys_report_type_attribute where type_group='DataList'") .append("\n) ta on ca.report_type_attr=ta.uuid") .append("\nwhere attribute_name is not null ") .append("\norder by report_area,cell_position_y,cell_position_x"); DataTableEntity tempDte = baseDao.listTable(sql.toString(), new Object[]{uuid}); DataTableEntity reportConfigAttrDte = new DataTableEntity(); FieldSetEntity tempFse; FieldSetEntity reportConfigAttrFse = new FieldSetEntity(); String curReportArea; String curX; String curY; String preReportArea = ""; String preX = ""; String preY = ""; for (int i = 0; i < tempDte.getRows(); i++) { tempFse = tempDte.getFieldSetEntity(i); curReportArea = tempFse.getString(CmnConst.ATTR_REPORT_AREA); curX = tempFse.getString(CmnConst.CELL_POSITION_X); curY = tempFse.getString(CmnConst.CELL_POSITION_Y); if (curReportArea == null || curX == null || curY == null) { continue; } if (!preReportArea.equals(curReportArea) || !preX.equals(curX) || !preY.equals(curY)) { reportConfigAttrFse = new FieldSetEntity(); reportConfigAttrDte.addFieldSetEntity(reportConfigAttrFse); reportConfigAttrFse.setTableName(CmnConst.PRODUCT_SYS_REPORT_CONFIG_ATTRIBUTE); reportConfigAttrFse.setValue(CmnConst.ATTR_X, curX); reportConfigAttrFse.setValue(CmnConst.ATTR_Y, curY); reportConfigAttrFse.setValue(CmnConst.ATTR_REPORT_AREA, curReportArea); } reportConfigAttrFse.setValue(tempFse.getString(CmnConst.ATTRIBUTE_NAME), tempFse.getString(CmnConst.REPORT_TYPE_ATTR_VALUE)); preReportArea = curReportArea; preX = curX; preY = curY; } FieldSetEntity reportConfigFse = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_REPORT_CONFIG, uuid, false); reportConfigFse.addSubDataTable(reportConfigAttrDte); return reportConfigFse; } /** * 报表新增 * * @param fse * @return */ @Transactional public String addReportConfig(FieldSetEntity fse) { fse.setValue(CmnConst.CREATED_BY, SpringMVCContextHolder.getCurrentUserId()); fse.setValue(CmnConst.CREATED_UTC_DATETIME, new Date()); fse.setValue(CmnConst.IS_VALID, 1); replaceAttrName2UUID(fse); if (StringUtils.isEmpty(fse.getString(CmnConst.PAGE_SIZE))) { fse.setValue(CmnConst.PAGE_SIZE, null); } System.out.println(System.currentTimeMillis()); String uuid = baseDao.add(fse); System.out.println(System.currentTimeMillis()); if ("1".equals(fse.getString(CmnConst.RELATE_FLAG))) { // 重新设置缓存 dataListReportService.setConfig(fse.getUUID()); } return uuid; } /** * 报表修改 * * @param fse * @return */ @Transactional public boolean updateReportConfig(FieldSetEntity fse) { fse.setValue(CmnConst.UPDATED_BY, SpringMVCContextHolder.getCurrentUserId()); fse.setValue(CmnConst.UPDATED_UTC_DATETIME, new Date()); replaceAttrName2UUID(fse); if (StringUtils.isEmpty(fse.getString(CmnConst.PAGE_SIZE))) { fse.setValue(CmnConst.PAGE_SIZE, null); } boolean result = baseDao.update(fse); if ("1".equals(fse.getString(CmnConst.RELATE_FLAG)) || !StringUtils.isEmpty(fse.getString(CmnConst.FUNCTION_UUID))) { // 重新设置缓存 dataListReportService.setConfig(fse.getUUID()); } return result; } /** * 替换属性名称为uuid * * @param fse */ private void replaceAttrName2UUID(FieldSetEntity fse) { DataTableEntity reportTypeAttrDte = baseDao.listTable(CmnConst.PRODUCT_SYS_REPORT_TYPE_ATTRIBUTE, "type_group='DataList'", new Object[]{}, new Object[]{CmnConst.ATTRIBUTE_NAME, CmnConst.UUID}); if (!BaseUtil.dataTableIsEmpty(reportTypeAttrDte)) { Map reportTypeAttrMap = Maps.newHashMap(); FieldSetEntity tempFse; for (int i = 0; i < reportTypeAttrDte.getRows(); i++) { tempFse = reportTypeAttrDte.getFieldSetEntity(i); reportTypeAttrMap.put(tempFse.getString(CmnConst.ATTRIBUTE_NAME), tempFse.getUUID()); } DataTableEntity preReportAttrDte = baseDao.listTable(CmnConst.PRODUCT_SYS_REPORT_CONFIG_ATTRIBUTE, "report_config_uuid=?", new Object[]{fse.getUUID()}); Map preReportAttrMap = Maps.newHashMap(); JSONObject tempObj; if (!BaseUtil.dataTableIsEmpty(preReportAttrDte)) { for (int i = 0; i < preReportAttrDte.getRows(); i++) { tempFse = preReportAttrDte.getFieldSetEntity(i); tempObj = new JSONObject(); tempObj.put(CmnConst.ATTR_REPORT_AREA, tempFse.getString(CmnConst.ATTR_REPORT_AREA)); tempObj.put(CmnConst.CELL_POSITION_X, tempFse.getString(CmnConst.CELL_POSITION_X)); tempObj.put(CmnConst.CELL_POSITION_Y, tempFse.getString(CmnConst.CELL_POSITION_Y)); tempObj.put(CmnConst.REPORT_TYPE_ATTR, tempFse.getString(CmnConst.REPORT_TYPE_ATTR)); preReportAttrMap.put(tempObj, tempFse.getUUID()); } } DataTableEntity reportAttrDte = fse.getSubDataTable(CmnConst.PRODUCT_SYS_REPORT_CONFIG_ATTRIBUTE); if (!BaseUtil.dataTableIsEmpty(reportAttrDte)) { String tempUUID; for (int i = 0; i < reportAttrDte.getRows(); i++) { tempFse = reportAttrDte.getFieldSetEntity(i); tempFse.setValue("report_type_attr_show_name", tempFse.getString(CmnConst.REPORT_TYPE_ATTR)); tempFse.setValue(CmnConst.REPORT_TYPE_ATTR, reportTypeAttrMap.get(tempFse.getString(CmnConst.REPORT_TYPE_ATTR))); tempFse.setValue(CmnConst.CELL_POSITION_X, tempFse.getString(CmnConst.ATTR_X)); tempFse.setValue(CmnConst.CELL_POSITION_Y, tempFse.getString(CmnConst.ATTR_Y)); String x = tempFse.getString(CmnConst.ATTR_X); tempObj = new JSONObject(); tempObj.put(CmnConst.ATTR_REPORT_AREA, tempFse.getString(CmnConst.ATTR_REPORT_AREA)); tempObj.put(CmnConst.CELL_POSITION_X, tempFse.getString(CmnConst.CELL_POSITION_X)); tempObj.put(CmnConst.CELL_POSITION_Y, tempFse.getString(CmnConst.CELL_POSITION_Y)); tempObj.put(CmnConst.REPORT_TYPE_ATTR, tempFse.getString(CmnConst.REPORT_TYPE_ATTR)); tempUUID = preReportAttrMap.get(tempObj); if (!StringUtils.isEmpty(tempUUID)) { tempFse.setValue(CmnConst.UUID, tempUUID); } if (StringUtils.isEmpty(tempFse.getString(CmnConst.REPORT_TYPE_ATTR_VALUE))) { //属性值是否为空 if (StringUtils.isEmpty(tempFse.getUUID())) { //没有保存过的属性 reportAttrDte.removeFieldSetEntity(i); i--; } else { //标记为删除 tempFse.setValue(CoreConst.SYSTEM_DATA_OPERATE_TYPE, "del"); } continue; } } } } } /** * 报表删除 * * @param uuid * @return */ @Transactional public boolean deleteReportConfig(String uuid) { return baseDao.delete(CmnConst.PRODUCT_SYS_REPORT_CONFIG, "uuid=?", new Object[]{uuid}); } @Autowired UpdateLoginUserInfoService updateLoginUserInfoService; /** * 取消报表发布 * * @param fse * @return */ @Transactional public boolean cancelRelease(FieldSetEntity fse) { DataTableEntity reportConfigDte = DataPoolCacheImpl.getInstance().getCacheData(CmnConst.CACHE_REPORT_CONFIG, new String[]{fse.getUUID()}); if (BaseUtil.dataTableIsEmpty(reportConfigDte)) { throw new BaseException(ReportCode.GET_REPORT_CONFIG_FIAL.getValue(), ReportCode.GET_REPORT_CONFIG_FIAL.getText()); } FieldSetEntity reportConfigFse = reportConfigDte.getFieldSetEntity(0); String functionUUID = reportConfigFse.getString(CmnConst.FUNCTION_UUID); if (StringUtils.isEmpty(functionUUID)) { return false; } DataTableEntity dt = baseDao.listTable(CmnConst.PRODUCT_SYS_FUNCTION_PERMISSION, "function_uuid=?", new Object[]{functionUUID}, new Object[]{"role_uuid uuid"}); //从角色权限中移除 baseDao.delete(CmnConst.PRODUCT_SYS_FUNCTION_PERMISSION, "function_uuid=?", new Object[]{functionUUID}); //删除连线 baseDao.delete(CmnConst.PRODUCT_SYS_LINK, "function_uuid=?", new Object[]{functionUUID}); //删除按钮 baseDao.delete(CmnConst.PRODUCT_SYS_FUNCTION_BUTTONS, "function_uuid=?", new Object[]{functionUUID}); //删除页面 baseDao.delete(CmnConst.PRODUCT_SYS_MVC_PAGE, "function_uuid=?", new Object[]{functionUUID}); //删除菜单 baseDao.delete(CmnConst.PRODUCT_SYS_MENUS, "function_uuid=?", new Object[]{functionUUID}); //删除功能 baseDao.delete(CmnConst.PRODUCT_SYS_FUNCTIONS, "uuid=?", new Object[]{functionUUID}); //数据回写 fse.setValue(CmnConst.FUNCTION_UUID, ""); if (!DataTableEntity.isEmpty(dt)) { updateLoginUserInfoService.updateUserInfoByUpdateRole(dt.getUuids(), true); } return baseDao.update(fse); } /** * 报表发布 * * @param fse * @return */ @Transactional public boolean releaseConfig(FieldSetEntity fse) { FieldSetEntity fseReport = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_REPORT_CONFIG, fse.getUUID(), false); //创建MVCC保存对象 FieldSetEntity fseFunction = new FieldSetEntity(); //1.创建MVC(系统MVC目录下) //生成功能编码 String defaultCode = "001-005"; fseFunction.setTableName(CmnConst.PRODUCT_SYS_FUNCTIONS); codeService.createCode(fseFunction, CmnConst.PRODUCT_SYS_FUNCTIONS, CmnConst.TRICODE, defaultCode); fseFunction.setValue(CmnConst.TABLE_UUID, CmnConst.PRODUCT_SYS_REPORT_CONFIG); //功能关联表 fseFunction.setValue(CmnConst.FUNCTION_NAME, fseReport.getString(CmnConst.REPORT_NAME)); //功能名称 fseFunction.setValue(CmnConst.FUNCTION_DESCRIPTION, fseReport.getString(CmnConst.REPORT_NAME)); //功能描述 fseFunction.setValue(CmnConst.STATUS_UUID, 1); //是否启用 fseFunction.setValue(CmnConst.FUNCTION_TYPE_UUID, 5); //功能类型-业务后台管理 管理员和普通用户都能分配该报表的权限 fseFunction.setValue(CmnConst.CLIENT_TYPE_UUID, "Web"); //客户端类型 fseFunction.setValue(CmnConst.VERSION_UUID, "001"); fseFunction.setValue(CmnConst.DATA_TYPE, 1);// 数据类型 fseFunction.setValue(CmnConst.TRICODE_PARENT, defaultCode);// 上级模块code fseFunction.setValue("terminal_type", 1); BaseUtil.createCreatorAndCreationTime(SpringMVCContextHolder.getCurrentUser(), fseFunction); //创建按钮保存对象 DataTableEntity dtButton = new DataTableEntity(); FieldSetEntity fseButton = new FieldSetEntity(); fseButton.setTableName(CmnConst.PRODUCT_SYS_FUNCTION_BUTTONS); fseButton.setValue(CmnConst.IS_MAIN, 1); //是否入口 fseButton.setValue(CmnConst.STATUS_UUID, 1); //是否启用 fseButton.setValue(CmnConst.CLIENT_TYPE_UUID, "Web"); //客户端类型 fseButton.setValue(CmnConst.BUTTON_NAME, "入口"); //按钮名称 fseButton.setValue(CmnConst.BUTTON_TITLE, "entrance"); //按钮标题 fseButton.setValue(CmnConst.BUTTON_TYPE, 1); //按钮类型 fseButton.setValue(CmnConst.BUTTON_CATEGORY_UUID, "main"); //按钮分类 fseButton.setValue(CmnConst.ROUTE_NAME, BaseUtil.getPageCode()); //路由名称 fseButton.setValue(CmnConst.UPLOAD_API_URL, CmnConst.ADDRESS_INIT_INTERFENCE);// 入口接口地址 fseButton.setValue("terminal_type", 1); JSONObject paramObj = new JSONObject(); paramObj.put(CmnConst.UUID, fse.getUUID()); fseButton.setValue(CmnConst.PARAMS, paramObj.toString());// 接口参数 fseButton.setValue(CmnConst.TOP_LOCATION, "100px"); fseButton.setValue(CmnConst.LEFT_LOCATION, "100px"); dtButton.setMeta(fseButton.getMeta()); dtButton.addFieldSetEntity(fseButton); //创建页面保存对象 DataTableEntity dtPage = new DataTableEntity(); FieldSetEntity fsePage = new FieldSetEntity(); fsePage.setTableName(CmnConst.PRODUCT_SYS_MVC_PAGE); // fsePage.setValue(CmnConst.PAGE_NAME, "报表展示"); fsePage.setValue(CmnConst.PAGE_NAME, fse.getString(CmnConst.MENU_NAME)); fsePage.setValue(CmnConst.PAGE_TYPE, 2); fsePage.setValue(CmnConst.PAGE_URL, CmnConst.ADDRESS_REPORT_SHOW); fsePage.setValue(CmnConst.TOP_LOCATION, "300px"); fsePage.setValue(CmnConst.LEFT_LOCATION, "100px"); fsePage.setValue(CmnConst.PAGE_OPEN_WITH, 0); fsePage.setValue(CmnConst.PAGE_TYPE, 0); fsePage.setValue("terminal_type", 1); dtPage.addFieldSetEntity(fsePage); fseFunction.addSubDataTable(dtButton); fseFunction.addSubDataTable(dtPage); String functionUUID = baseDao.add(fseFunction); //创建连线保存对象 FieldSetEntity fseLink = new FieldSetEntity(); fseLink.setTableName(CmnConst.PRODUCT_SYS_LINK); fseLink.setValue(CmnConst.LINK_TYPE, 0); //连线类型 fseLink.setValue(CmnConst.FUNCTION_UUID, functionUUID); //所属功能UUID fseLink.setValue(CmnConst.LINE_FROM, fseButton.getUUID()); //起始端 fseLink.setValue(CmnConst.FROM_TYPE, 0); //起始端类型 fseLink.setValue(CmnConst.LINE_TO, fsePage.getUUID()); //结束端 fseLink.setValue(CmnConst.TO_TYPE, 2); //结束端类型 fseLink.setValue("terminal_type", 1); BaseUtil.createCreatorAndCreationTime(SpringMVCContextHolder.getCurrentUser(), fseLink); baseDao.add(fseLink); // 提取发布的角色相关数据 List roleUUIDList = Lists.newArrayList(); List clientUUIDList = Lists.newArrayList(); clientUUIDList.add(SpringMVCContextHolder.getCurrentUser().getClientUuid()); // String[] singleRoleInfoArr; for (String singleRoleInfo : fse.getString(CmnConst.ROLE_UUID).split("#")) { // singleRoleInfoArr = singleRoleInfo.split(","); roleUUIDList.add(singleRoleInfo); } // 2.绑定角色(给某一角色赋予该功能) for (String roleUUID : roleUUIDList) { FieldSetEntity fseFunctionButton = new FieldSetEntity(); fseFunctionButton.setTableName(CmnConst.PRODUCT_SYS_FUNCTION_PERMISSION); fseFunctionButton.setValue(CmnConst.FUNCTION_UUID, functionUUID);// 所属功能UUID fseFunctionButton.setValue(CmnConst.BUTTON_UUID, fseButton.getUUID());// 按钮UUID fseFunctionButton.setValue(CmnConst.ROLE_UUID, roleUUID);// 所属角色UUID baseDao.add(fseFunctionButton); } // 3.绑定客户角色(给某一客户角色赋予该功能) for (String clientUUID : clientUUIDList) { DataTableEntity clientDte = DataPoolCacheImpl.getInstance().getCacheData("客户信息", new String[]{clientUUID}); if (BaseUtil.dataTableIsEmpty(clientDte)) { continue; } FieldSetEntity clientFse = clientDte.getFieldSetEntity(0); FieldSetEntity fseClientFunctionButton = new FieldSetEntity(); fseClientFunctionButton.setTableName(CmnConst.PRODUCT_SYS_FUNCTION_PERMISSION); fseClientFunctionButton.setValue(CmnConst.FUNCTION_UUID, functionUUID);// 所属功能UUID fseClientFunctionButton.setValue(CmnConst.BUTTON_UUID, fseButton.getUUID());// 按钮UUID fseClientFunctionButton.setValue(CmnConst.ROLE_UUID, clientFse.getString(CmnConst.ROLE_UUID));// 所属角色UUID baseDao.add(fseClientFunctionButton); } //4.创建菜单(根据前端所选父级菜单) FieldSetEntity fseMenu = new FieldSetEntity(); fseMenu.setTableName(CmnConst.PRODUCT_SYS_MENUS); codeService.createCode(fseMenu, CmnConst.PRODUCT_SYS_MENUS, CmnConst.TRICODE, fse.getString(CmnConst.TRICODE_PARENT)); fseMenu.setValue(CmnConst.TRICODE_PARENT, fse.getString(CmnConst.TRICODE_PARENT)); fseMenu.setValue(CmnConst.MENU_NAME, fse.getString(CmnConst.MENU_NAME)); fseMenu.setValue(CmnConst.FUNCTION_UUID, functionUUID); fseMenu.setValue(CmnConst.SEQUENCE, fse.getString(CmnConst.SEQUENCE)); fseMenu.setValue(CmnConst.IS_CATALOG, 0); fseMenu.setValue(CmnConst.IS_SHOW, StringUtils.isEmpty(fse.getString(CmnConst.IS_SHOW)) ? 1 : fse.getString(CmnConst.IS_SHOW)); fseMenu.setValue(CmnConst.MENU_ICON, fse.getString(CmnConst.MENU_ICON)); BaseUtil.createCreatorAndCreationTime(SpringMVCContextHolder.getCurrentUser(), fseMenu); baseDao.add(fseMenu); //数据回写 fseReport.setValue(CmnConst.FUNCTION_UUID, functionUUID); boolean result = baseDao.update(fseReport); // 重新设置缓存 dataListReportService.setConfig(fseReport.getUUID()); return result; } /** * 报表copy * * @param uuid * @return */ public String copyConfig(String uuid) { FieldSetEntity fse = baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_REPORT_CONFIG, uuid, true); FieldSetEntity fseCopy = fse; fseCopy.remove(CmnConst.ID); fseCopy.remove(CmnConst.UUID); DataTableEntity dtSub = fseCopy.getSubDataTable(CmnConst.PRODUCT_SYS_REPORT_CONFIG_ATTRIBUTE); if (dtSub != null && dtSub.getRows() > 0) { for (int i = 0; i < dtSub.getRows(); i++) { FieldSetEntity fseSub = dtSub.getFieldSetEntity(i); fseSub.remove(CmnConst.ID); fseSub.remove(CmnConst.UUID); } } return baseDao.add(fseCopy, true); } /** * 配置报表-引用 * * @param fse * @return */ public FieldSetEntity quoteReportConfig(FieldSetEntity fse) { FieldSetEntity sourceFse = findReportConfig(fse.getUUID()); sourceFse.setValue(CmnConst.DATASOURCE_UUID, fse.getString(CmnConst.DATASOURCE_UUID)); sourceFse.remove(new String[]{CmnConst.ID, CmnConst.UUID, CmnConst.CREATED_BY, CmnConst.CREATED_UTC_DATETIME, CmnConst.UPDATED_BY, CmnConst.CREATED_UTC_DATETIME, CmnConst.REPORT_NAME}); DataTableEntity subDte = sourceFse.getSubDataTable(CmnConst.PRODUCT_SYS_REPORT_CONFIG_ATTRIBUTE); FieldSetEntity subFse; for (int i = 0; i < subDte.getRows(); i++) { subFse = subDte.getFieldSetEntity(i); subFse.remove(new String[]{CmnConst.ID, CmnConst.UUID, CmnConst.CREATED_BY, CmnConst.CREATED_UTC_DATETIME, CmnConst.UPDATED_BY, CmnConst.CREATED_UTC_DATETIME}); } return sourceFse; } /** * 获取报表发布信息-发布 * * @return */ public JSONArray getReportReleaseInfo() { StringBuilder sql = new StringBuilder(256); DataTableEntity aimDte = new DataTableEntity(); DataTableEntity dte; Object[] arr; String filter; sql.append("select distinct null pid,uuid sid,client_name name FROM product_sys_clients c") .append("\ninner join (") .append("\n select client_uuid pid,uuid sid,org_level_name FROM product_sys_org_levels where org_level_status=0 order by org_level_code") .append("\n) o on o.pid=c.uuid") .append("\ninner join (") .append("\n select org_level_uuid pid,uuid sid,role_name FROM product_sys_role where is_used=1") .append("\n) r on r.pid=o.sid"); // 去掉admin所属客户 // .append("\nwhere c.uuid!='4d4679ed-c4c3-41b8-abfe-451a66fd4043'"); dte = baseDao.listTable(sql.toString(), new Object[]{}); aimDte.addFieldSetEntity(dte); arr = dte.getFieldAllValues("sid"); filter = BaseUtil.buildQuestionMarkFilter("client_uuid", arr.length, true); sql.setLength(0); sql.append("\nselect distinct o.* from (") .append("\n select client_uuid pid,uuid sid,org_level_name name FROM product_sys_org_levels where org_level_status=0") .append("\n and ").append(filter) .append("\n order by org_level_code") .append("\n) o") .append("\ninner join (") .append("\n select org_level_uuid pid,uuid sid,role_name FROM product_sys_role where is_used=1") .append("\n) r on r.pid=o.sid"); dte = baseDao.listTable(sql.toString(), arr); aimDte.addFieldSetEntity(dte); arr = dte.getFieldAllValues("sid"); filter = BaseUtil.buildQuestionMarkFilter("org_level_uuid", arr.length, true); sql.setLength(0); sql.append("\nselect org_level_uuid pid,uuid sid,role_name name FROM product_sys_role where is_used=1").append(" and ").append(filter); dte = baseDao.listTable(sql.toString(), arr); aimDte.addFieldSetEntity(dte); return BaseUtil.dataTableToTreeData(aimDte, "sid", "pid", null, false); } /** * 获取报表发布信息-发布后查看信息 * * @return */ public JSONObject viewReportReleaseInfo(FieldSetEntity fse) { DataTableEntity reportConfigDte = DataPoolCacheImpl.getInstance().getCacheData(CmnConst.CACHE_REPORT_CONFIG, new String[]{fse.getUUID()}); if (BaseUtil.dataTableIsEmpty(reportConfigDte)) { throw new BaseException(ReportCode.GET_REPORT_RELEASE_INFO_FAIL.getValue(), ReportCode.GET_REPORT_RELEASE_INFO_FAIL.getText()); } FieldSetEntity reportConfigFse = reportConfigDte.getFieldSetEntity(0); StringBuilder sql = new StringBuilder(256); sql.append("\nselect group_concat(single_role_uuid separator '#') role_uuid") .append("\nfrom (") .append("\n select concat(client_uuid,',',uuid,',',role_uuid) single_role_uuid") .append("\n FROM product_sys_org_levels o") .append("\n inner join (") .append("\n select org_level_uuid,uuid role_uuid,role_name") .append("\n FROM product_sys_role r") .append("\n inner join (") .append("\n select role_uuid FROM product_sys_function_permission where function_uuid=?") .append("\n ) p on r.uuid=p.role_uuid") .append("\n ) r1 on o.uuid=r1.org_level_uuid") .append("\n) t"); String functionUUID = reportConfigFse.getString(CmnConst.FUNCTION_UUID); DataTableEntity dte = baseDao.listTable(sql.toString(), new Object[]{functionUUID}); FieldSetEntity menuFse = baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_MENUS, "function_uuid=?", new Object[]{functionUUID}, false); JSONObject resultObj = new JSONObject(); resultObj.put(CmnConst.UUID, fse.getUUID()); resultObj.put(CmnConst.ROLE_UUID, dte.getFieldSetEntity(0).getString(CmnConst.ROLE_UUID)); resultObj.put(CmnConst.TRICODE_PARENT, menuFse.getString(CmnConst.TRICODE_PARENT)); resultObj.put(CmnConst.MENU_ICON, menuFse.getString(CmnConst.MENU_ICON)); resultObj.put(CmnConst.MENU_NAME, menuFse.getString(CmnConst.MENU_NAME)); return resultObj; } /** * 已发布列表界面 * * @param fse * @return */ public DataTableEntity releasedListReportConfig(FieldSetEntity fse) { String filter = queryFilterService.getQueryFilter(fse); StringBuilder sql = new StringBuilder(256); // sql.append("select * from ( "); sql.append("\n select rc.uuid,rc.report_name,rtc.type_name,t1.role_info,mp.menu_name tricode_parent,m.menu_icon,m.menu_name "); sql.append("\n FROM product_sys_report_config rc "); sql.append("\n inner join ( "); sql.append("\n select function_uuid,group_concat(role_info separator ',') role_info "); sql.append("\n from ( "); sql.append("\n select function_uuid,concat(c.client_name,'/',o.org_level_name,'/',role_name) role_info "); sql.append("\n FROM product_sys_clients c "); sql.append("\n inner join product_sys_org_levels o on o.client_uuid=c.uuid "); sql.append("\n inner join ( "); sql.append("\n select function_uuid,org_level_uuid,uuid role_uuid,role_name "); sql.append("\n FROM product_sys_role r "); sql.append("\n inner join ( "); sql.append("\n select function_uuid,role_uuid FROM product_sys_function_permission "); sql.append("\n ) p on r.uuid=p.role_uuid "); sql.append("\n ) r1 on o.uuid=r1.org_level_uuid "); sql.append("\n ) t "); sql.append("\n group by function_uuid "); sql.append("\n ) t1 on rc.function_uuid=t1.function_uuid "); sql.append("\n inner join product_sys_menus m on rc.function_uuid=m.function_uuid "); sql.append("\n inner join product_sys_report_type_config rtc on rc.type_uuid=rtc.uuid "); sql.append("\n inner join product_sys_menus mp on m.tricode_parent=mp.tricode "); // sql.append("\n) t2 "); if (!StringUtils.isEmpty(filter)) { sql.append(" WHERE " + filter); } Integer curPage = fse.getInteger(CmnConst.CPAGE); Integer pageSize = fse.getInteger(CmnConst.PAGESIZE); return baseDao.listTable(sql.toString(), new Object[]{}, pageSize == null ? Integer.MAX_VALUE : pageSize, curPage == null ? 1 : curPage); } }