杜洪波
2025-09-17 6c0c3557e791dc46948190dd3745335ed043d051
src/main/java/com/product/server/report/service/ReportConfigService.java
@@ -51,10 +51,10 @@
        List<Object> paramList = Lists.newArrayList();
        StringBuilder sql = new StringBuilder(512);
        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='') ");
        sql.append("\nSELECT a.uuid,a.type_uuid,a.is_valid,a.org_level_uuid,a.report_name,b.type_name,b.type_group");
        sql.append("\nFROM product_sys_report_config a");
        sql.append("\nLEFT JOIN product_sys_report_type_config b ON a.type_uuid = b.uuid");
        sql.append("\nWHERE (function_uuid is null or function_uuid='') ");
        if (!StringUtils.isEmpty(fse.getString(CmnConst.TYPE_UUID))) {
            sql.append("\nand b.type_group=?");
            paramList.add(fse.getString(CmnConst.TYPE_UUID));
@@ -474,19 +474,25 @@
     *
     * @return
     */
    public JSONArray getReportReleaseInfo() {
        StringBuilder sql = new StringBuilder(256);
        public JSONArray getReportReleaseInfo() {
        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");
        sql.append("\nSELECT distinct null pid,uuid sid,client_name name ");
        sql.append("\nFROM product_sys_clients c");
        sql.append("\nINNER JOIN (");
        sql.append("\n  SELECT client_uuid pid,uuid sid,org_level_name ");
        sql.append("\n  FROM product_sys_org_levels ");
        sql.append("\n  WHERE org_level_status=0 ");
        sql.append("\n  ORDER BY org_level_code");
        sql.append("\n) o ON o.pid=c.uuid");
        sql.append("\nINNER JOIN (");
        sql.append("\n  SELECT org_level_uuid pid,uuid sid,role_name ");
        sql.append("\n  FROM product_sys_role ");
        sql.append("\n  WHERE is_used=1");
        sql.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[]{});
@@ -496,14 +502,19 @@
        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");
        sql.append("\nSELECT distinct o.* ");
        sql.append("\nFROM (");
        sql.append("\n  SELECT client_uuid pid,uuid sid,org_level_name name ");
        sql.append("\n  FROM product_sys_org_levels ");
        sql.append("\n  WHERE org_level_status=0");
        sql.append("\n  AND ").append(filter);
        sql.append("\n  ORDER BY org_level_code");
        sql.append("\n) o");
        sql.append("\nINNER JOIN (");
        sql.append("\n  SELECT org_level_uuid pid,uuid sid,role_name ");
        sql.append("\n  FROM product_sys_role ");
        sql.append("\n  WHERE is_used=1");
        sql.append("\n) r ON r.pid=o.sid");
        dte = baseDao.listTable(sql.toString(), arr);
        aimDte.addFieldSetEntity(dte);
@@ -565,28 +576,30 @@
    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("\nSELECT rc.uuid,rc.report_name,rtc.type_name,mp.menu_name tricode_parent,m.menu_icon,m.menu_name ");
//        sql.append("\nselect 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("\nINNER JOIN ( ");
//        sql.append("\n  select function_uuid,group_concat(role_info separator ',') role_info ");   //语法解析失败
        sql.append("\n  SELECT function_uuid ");
        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    SELECT function_uuid ");
        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     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      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  GROUP BY function_uuid ");
        sql.append("\n) t1 ON rc.function_uuid = t1.function_uuid ");
        sql.append("\nINNER INNER product_sys_menus m on rc.function_uuid=m.function_uuid ");
        sql.append("\nINNER INNER product_sys_report_type_config rtc on rc.type_uuid=rtc.uuid ");
        sql.append("\nINNER INNER product_sys_menus mp on m.tricode_parent=mp.tricode ");
//        sql.append("\n) t2 ");
        if (!StringUtils.isEmpty(filter)) {
            sql.append(" WHERE " + filter);