许鹏程
2023-05-24 5839384228e2f10d880d23c7a1c99ba86430634c
Merge remote-tracking branch 'origin/master'

# Conflicts:
# product-server-admin/src/main/java/com/product/admin/service/RouterService.java
已修改6个文件
453 ■■■■ 文件已修改
pom.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
product-server-admin/src/main/java/com/product/admin/service/LoginInitParameterService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
product-server-admin/src/main/java/com/product/admin/service/PersonalCenterService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
product-server-admin/src/main/java/com/product/admin/service/RouterService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
product-server-admin/src/main/java/com/product/admin/service/SystemFaceService.java 422 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
product-server-admin/src/main/java/com/product/admin/service/SystemMenusService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -18,6 +18,8 @@
        <module>product-server-admin</module>
        <module>product-server-org-admin</module>
        <module>home-server-admin</module>
        <module>product-server-core</module>
        <module>product-server-administrator</module>
    </modules>
    <properties>
        <skipTests>true</skipTests>
@@ -766,5 +768,10 @@
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
        </dependency>
        <dependency>
            <groupId>org.fusesource</groupId>
            <artifactId>sigar</artifactId>
            <version>1.6.4</version>
        </dependency>
    </dependencies>
</project>
product-server-admin/src/main/java/com/product/admin/service/LoginInitParameterService.java
@@ -104,7 +104,8 @@
        if (user.getCurrentDept() != null) {
            ui.put("dept_name", user.getCurrentDept().getString("org_level_name"));
            ui.put("dept_uuid", user.getCurrentDept().getString("uuid"));
            ui.put("dept_all_name", user.getCurrentDept().getString("org_level_all"));
            String dept_all=user.getCurrentDept().getString("org_level_all");
            ui.put("dept_all_name", dept_all.substring(dept_all.indexOf(user.getOrg_level_name())));
            ui.put("dept_code", user.getCurrentDept().getString("org_level_code"));
        }
        ui.put("user_signature", RedisUtil.get(userOperaService.USER_SIGNATURE_KEY + user.getUser_id()));
product-server-admin/src/main/java/com/product/admin/service/PersonalCenterService.java
@@ -98,7 +98,7 @@
        StringBuilder sql = new StringBuilder();
        SystemUser currentUser = SpringMVCContextHolder.getCurrentUser();
        if (!currentUser.isManager()) {
            sql.append("\n SELECT b.user_phone_number,b.user_primary_email,b.user_name,a.sex,b.user_id,b.user_signature,b.thumbnail_img,c.job_post_name,d.org_level_name dept_name,d.uuid dept_uuid,d.org_level_uuid,d.org_level_all ,e.org_level_name company_name FROM  product_sys_staffs a  ");
            sql.append("\n SELECT b.gender, b.user_phone_number,b.user_primary_email,b.user_name,a.sex,b.user_id,b.user_signature,b.thumbnail_img,c.job_post_name,d.org_level_name dept_name,d.uuid dept_uuid,d.org_level_uuid,d.org_level_all ,e.org_level_name company_name FROM  product_sys_staffs a  ");
            sql.append("\n join product_sys_users b on a.user_id=b.user_id and a.user_id=? ");
            sql.append("\n join product_sys_job_posts c on a.job_post_uuid=c.uuid ");
            sql.append("\n join product_sys_org_levels d on d.uuid=a.dept_uuid ");
product-server-admin/src/main/java/com/product/admin/service/RouterService.java
@@ -124,7 +124,7 @@
        sql.append(" page_name title, ");
        sql.append(" d.button_icon icon, ");
        sql.append(" page_type, ");
        sql.append(" c.face_uuid,c.face_number ");
        sql.append(" c.face_uuid,c.face_number, ");
        sql.append(" d.uuid button_uuid, ");
        sql.append(" d.button_name, ");
        sql.append(" d.client_type_uuid ");
product-server-admin/src/main/java/com/product/admin/service/SystemFaceService.java
@@ -28,231 +28,231 @@
@Service
public class SystemFaceService extends AbstractBaseService implements ISystemFaceService {
    /**
     * 缓存起始Key
     */
    public static final String FACE_LIST_KEY = "face:fieldList:";
    /**
     * 缓存起始Key
     */
    public static final String FACE_LIST_KEY = "face:fieldList:";
    @Autowired
    QueryFilterService queryFilterService;
    @Autowired
    QueryFilterService queryFilterService;
    @Autowired
    RolesService rolesService;
    @Autowired
    RolesService rolesService;
    /**
     * 获取模块功能树
     *
     * @return
     * @throws BaseException
     */
    @Override
    public DataTableEntity getModuleFunctionTree() throws BaseException {
    /**
     * 获取模块功能树
     *
     * @return
     * @throws BaseException
     */
    @Override
    public DataTableEntity getModuleFunctionTree() throws BaseException {
        return rolesService.getModuleFunctions();
    }
        return rolesService.getModuleFunctions();
    }
    /**
     * 表单列表
     *
     * @param fse
     * @return
     * @throws BaseException
     */
    @Override
    public DataTableEntity getFaceList(FieldSetEntity fse) throws BaseException {
        String queryFilter = queryFilterService.getQueryFilter(fse);
        String filter = fse.getString("filter");
        if (StringUtils.isEmpty(filter)) {
            filter = queryFilter;
        } else if (!StringUtils.isEmpty(queryFilter)) {
            filter += " and (" + queryFilter + ") ";
        }
        DataTableEntity dataTableEntity = getBaseDao().listTable(CmnConst.PRODUCT_SYS_FACE, filter, new Object[]{}, null, null, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE));
        getBaseDao().loadPromptData(dataTableEntity);
        return dataTableEntity;
    }
    /**
     * 表单列表
     *
     * @param fse
     * @return
     * @throws BaseException
     */
    @Override
    public DataTableEntity getFaceList(FieldSetEntity fse) throws BaseException {
        String queryFilter = queryFilterService.getQueryFilter(fse);
        String filter = fse.getString("filter");
        if (StringUtils.isEmpty(filter)) {
            filter = queryFilter;
        } else if (!StringUtils.isEmpty(queryFilter)) {
            filter += " and (" + queryFilter + ") ";
        }
        DataTableEntity dataTableEntity = getBaseDao().listTable(CmnConst.PRODUCT_SYS_FACE, filter, new Object[]{}, null, null, fse.getInteger(CmnConst.PAGESIZE), fse.getInteger(CmnConst.CPAGE));
        getBaseDao().loadPromptData(dataTableEntity);
        return dataTableEntity;
    }
    /**
     * 获取表单详情根据uuid
     *
     * @param fse
     * @return
     * @throws BaseException
     */
    @Override
    public FieldSetEntity getFaceInfoByUuid(FieldSetEntity fse) throws BaseException {
        return getBaseDao().getFieldSetEntity(CmnConst.PRODUCT_SYS_FACE, fse.getUUID(), true);
    }
    /**
     * 获取表单详情根据uuid
     *
     * @param fse
     * @return
     * @throws BaseException
     */
    @Override
    public FieldSetEntity getFaceInfoByUuid(FieldSetEntity fse) throws BaseException {
        return getBaseDao().getFieldSetEntity(CmnConst.PRODUCT_SYS_FACE, fse.getUUID(), true);
    }
    /**
     * 保存表单详情根据uuid
     *
     * @param fse
     * @return
     * @throws BaseException
     */
    @Override
    @Transactional
    public String saveFaceInfo(FieldSetEntity fse) throws BaseException {
        BaseUtil.createCreatorAndCreationTime(SpringMVCContextHolder.getCurrentUser(), fse);
        Map<String, DataTableEntity> subData = fse.getSubData();
        subData.forEach((k, v) -> {
            BaseUtil.createCreatorAndCreationTime(SpringMVCContextHolder.getCurrentUser(), v);
        });
        getBaseDao().saveFieldSetEntity(fse);
        this.initialFieldCache(fse.getUUID());
        return fse.getUUID();
    }
    /**
     * 保存表单详情根据uuid
     *
     * @param fse
     * @return
     * @throws BaseException
     */
    @Override
    @Transactional
    public String saveFaceInfo(FieldSetEntity fse) throws BaseException {
        BaseUtil.createCreatorAndCreationTime(SpringMVCContextHolder.getCurrentUser(), fse);
        Map<String, DataTableEntity> subData = fse.getSubData();
        subData.forEach((k, v) -> {
            BaseUtil.createCreatorAndCreationTime(SpringMVCContextHolder.getCurrentUser(), v);
        });
        getBaseDao().saveFieldSetEntity(fse);
        this.initialFieldCache(fse.getUUID());
        return fse.getUUID();
    }
    /**
     * 删除表单详情根据uuid
     *
     * @param uuids
     * @return
     * @throws BaseException
     */
    @Override
    @Transactional
    public boolean deleteFaceInfoByUuids(String[] uuids) throws BaseException {
        boolean delete = getBaseDao().delete(CmnConst.PRODUCT_SYS_FACE, uuids);
        deleteFieldCache(uuids);
        return delete;
    }
    /**
     * 删除表单详情根据uuid
     *
     * @param uuids
     * @return
     * @throws BaseException
     */
    @Override
    @Transactional
    public boolean deleteFaceInfoByUuids(String[] uuids) throws BaseException {
        boolean delete = getBaseDao().delete(CmnConst.PRODUCT_SYS_FACE, uuids);
        deleteFieldCache(uuids);
        return delete;
    }
    @Override
    public FaceListEntity getFaceFieldList(String face_uuid) throws BaseException {
        if (StringUtils.isEmpty(face_uuid)) {
            return null;
        }
        if (!RedisUtil.exists(this.FACE_LIST_KEY + face_uuid)) {
            this.initialFieldCache(face_uuid);
        }
        FaceListEntity faceListEntity = (FaceListEntity) RedisUtil.get(this.FACE_LIST_KEY + face_uuid);
        if (faceListEntity == null) {
            initialFieldCache(face_uuid);
            faceListEntity = (FaceListEntity) RedisUtil.get(this.FACE_LIST_KEY + face_uuid);
        }
        return faceListEntity;
    }
    @Override
    public FaceListEntity getFaceFieldList(String face_uuid) throws BaseException {
        if (StringUtils.isEmpty(face_uuid)) {
            return null;
        }
        if (!RedisUtil.exists(this.FACE_LIST_KEY + face_uuid)) {
            this.initialFieldCache(face_uuid);
        }
        FaceListEntity faceListEntity = (FaceListEntity) RedisUtil.get(this.FACE_LIST_KEY + face_uuid);
        if (faceListEntity == null) {
            initialFieldCache(face_uuid);
            faceListEntity = (FaceListEntity) RedisUtil.get(this.FACE_LIST_KEY + face_uuid);
        }
        return faceListEntity;
    }
    /**
     * 获取列表过滤条件
     *
     * @param aliasTable 表别名集合
     * @param face_uuid  表单uuid
     * @param val        模糊搜索值
     * @return sql过滤条件
     * @throws BaseException
     */
    @Override
    public String getListFilter(Map<String, List<String>> aliasTable, Map<String, List<String>> aliasField, String face_uuid, String val) throws BaseException {
        if (StringUtils.isEmpty(val)) {
            return "";
        }
        FaceListEntity face = (FaceListEntity) RedisUtil.get(this.FACE_LIST_KEY + face_uuid);
        if (face != null) {
            String tableAlias = null;
            String tableName = face.getTableName();
            List<String> t = aliasTable.get(tableName);
            if (t != null && t.size() > 0) {
                tableAlias = t.get(0);
            }
            Map<String, List<String>> params = face.getFilters(tableAlias, aliasField);
            List<String> fieldNames = params.get("fields");
            List<String> filters = params.get("filter");
            String filter = "";
            for (int i = 0; i < fieldNames.size(); i++) {
                if (i > 0) {
                    filter += " or ";
                }
                filter += " " + fieldNames.get(i) + " LIKE BINARY concat('%','" + val + "','%')";
            }
            for (int i = 0; i < filters.size(); i++) {
                if (!"".equals(filter)) {
                    filter += " or ";
                }
                filter += filters.get(i).replace("~val~", val);
            }
            return "".equals(filter) ? "" : "( " + filter + " )";
        }
        return "";
    }
    /**
     * 获取列表过滤条件
     *
     * @param aliasTable 表别名集合
     * @param face_uuid  表单uuid
     * @param val        模糊搜索值
     * @return sql过滤条件
     * @throws BaseException
     */
    @Override
    public String getListFilter(Map<String, List<String>> aliasTable, Map<String, List<String>> aliasField, String face_uuid, String val) throws BaseException {
        if (StringUtils.isEmpty(val)) {
            return "";
        }
        FaceListEntity face = (FaceListEntity) RedisUtil.get(this.FACE_LIST_KEY + face_uuid);
        if (face != null) {
            String tableAlias = null;
            String tableName = face.getTableName();
            List<String> t = aliasTable.get(tableName);
            if (t != null && t.size() > 0) {
                tableAlias = t.get(0);
            }
            Map<String, List<String>> params = face.getFilters(tableAlias, aliasField);
            List<String> fieldNames = params.get("fields");
            List<String> filters = params.get("filter");
            String filter = "";
            for (int i = 0; i < fieldNames.size(); i++) {
                if (i > 0) {
                    filter += " or ";
                }
                filter += " " + fieldNames.get(i) + " LIKE BINARY concat('%','" + val + "','%')";
            }
            for (int i = 0; i < filters.size(); i++) {
                if (!"".equals(filter)) {
                    filter += " or ";
                }
                filter += filters.get(i).replace("~val~", val);
            }
            return "".equals(filter) ? "" : "( " + filter + " )";
        }
        return "";
    }
    /**
     * 删除表单字段缓存根据表单uuid
     *
     * @param uuid
     */
    private void deleteFieldCache(String[] uuid) {
        if (uuid != null && uuid.length > 0) {
            String[] keys = new String[uuid.length];
            for (int i = 0; i < uuid.length; i++) {
                keys[i] = this.FACE_LIST_KEY + uuid[i];
            }
            if (keys.length > 0) {
                RedisUtil.del(keys);
            }
        }
    }
    /**
     * 删除表单字段缓存根据表单uuid
     *
     * @param uuid
     */
    private void deleteFieldCache(String[] uuid) {
        if (uuid != null && uuid.length > 0) {
            String[] keys = new String[uuid.length];
            for (int i = 0; i < uuid.length; i++) {
                keys[i] = this.FACE_LIST_KEY + uuid[i];
            }
            if (keys.length > 0) {
                RedisUtil.del(keys);
            }
        }
    }
    /**
     * 初始化表单字段缓存
     *
     * @param faceUuids 表单uuid 多个用逗号分割 传入null 则初始化所有
     */
    private void initialFieldCache(String faceUuids) {
        StringBuilder sql = new StringBuilder();
        sql.append(" SELECT ");
        sql.append(" ifnull(d.field_name,a.field_name) field_name,a.field_alias, ");
        sql.append(" d.field_reference, ");
        sql.append(" d.uuid field_uuid, ");
        sql.append(" b.face_name, ");
        sql.append(" b.table_uuid, ");
        sql.append(" a.face_uuid, ");
        sql.append(" column_name, ");
        sql.append(" column_width, ");
        sql.append(" sequence ");
        sql.append(" FROM ");
        sql.append(" product_sys_face_list a ");
        sql.append(" RIGHT JOIN product_sys_face b ON a.face_uuid = b.uuid ");
        sql.append(" LEFT JOIN product_sys_datamodel_field d ON a.field_name = d.field_name and b.table_uuid=d.table_uuid");
        sql.append(" WHERE ");
        sql.append(" a.is_used = 1 ");
        Object[] objects = {};
        if (!StringUtils.isEmpty(faceUuids)) {
            sql.append(" AND ( ");
            objects = faceUuids.split(",");
            sql.append(BaseUtil.buildQuestionMarkFilter("b.uuid", objects.length, true));
            sql.append(" ) ");
        }
        sql.append(" ORDER BY face_uuid,sequence ");
        DataTableEntity dt = getBaseDao().listTable(sql.toString(), objects);
        Map<String, FaceListEntity> faceListEntityMap = Maps.newHashMap();
        if (!BaseUtil.dataTableIsEmpty(dt)) {
            for (int i = 0; i < dt.getRows(); i++) {
                String face_uuid = dt.getString(i, "face_uuid");
                FaceListEntity faceListEntity = faceListEntityMap.get(face_uuid);
                if (faceListEntity == null) {
                    faceListEntity = new FaceListEntity();
                    faceListEntity.setFaceName(face_uuid);
                    faceListEntity.setTableUuid(dt.getString(i, CmnConst.TABLE_UUID));
                    faceListEntity.setUuid(dt.getString(i, "face_uuid"));
                    faceListEntityMap.put(face_uuid, faceListEntity);
                }
                faceListEntity.addField(dt.getString(i, CmnConst.FIELD_NAME), dt.getString(i, "field_uuid"),
                        dt.getString(i, "column_name"),
                        dt.getString(i, "column_width"),
                        dt.getInt(i, CmnConst.SEQUENCE), dt.getString(i, "field_reference"));
    /**
     * 初始化表单字段缓存
     *
     * @param faceUuids 表单uuid 多个用逗号分割 传入null 则初始化所有
     */
    private void initialFieldCache(String faceUuids) {
        StringBuilder sql = new StringBuilder();
        sql.append(" SELECT ");
        sql.append(" ifnull(d.field_name,a.field_name) field_name,a.field_alias, ");
        sql.append(" d.field_reference, ");
        sql.append(" d.uuid field_uuid, ");
        sql.append(" b.face_name, ");
        sql.append(" b.table_uuid, ");
        sql.append(" a.face_uuid, ");
        sql.append(" column_name, ");
        sql.append(" column_width, ");
        sql.append(" sequence ");
        sql.append(" FROM ");
        sql.append(" product_sys_face_list a ");
        sql.append(" RIGHT JOIN product_sys_face b ON a.face_uuid = b.uuid ");
        sql.append(" LEFT JOIN product_sys_datamodel_field d ON a.field_name = d.field_name and b.table_uuid=d.table_uuid");
        sql.append(" WHERE ");
        sql.append(" a.is_used = 1 ");
        Object[] objects = {};
        if (!StringUtils.isEmpty(faceUuids)) {
            sql.append(" AND ( ");
            objects = faceUuids.split(",");
            sql.append(BaseUtil.buildQuestionMarkFilter("b.uuid", objects.length, true));
            sql.append(" ) ");
        }
        sql.append(" ORDER BY face_uuid,sequence ");
        DataTableEntity dt = getBaseDao().listTable(sql.toString(), objects);
        Map<String, FaceListEntity> faceListEntityMap = Maps.newHashMap();
        if (!BaseUtil.dataTableIsEmpty(dt)) {
            for (int i = 0; i < dt.getRows(); i++) {
                String face_uuid = dt.getString(i, "face_uuid");
                FaceListEntity faceListEntity = faceListEntityMap.get(face_uuid);
                if (faceListEntity == null) {
                    faceListEntity = new FaceListEntity();
                    faceListEntity.setFaceName(face_uuid);
                    faceListEntity.setTableUuid(dt.getString(i, CmnConst.TABLE_UUID));
                    faceListEntity.setUuid(dt.getString(i, "face_uuid"));
                    faceListEntityMap.put(face_uuid, faceListEntity);
                }
                faceListEntity.addField(dt.getString(i, CmnConst.FIELD_NAME), dt.getString(i, "field_uuid"),
                        dt.getString(i, "column_name"),
                        dt.getString(i, "column_width"),
                        dt.getInt(i, CmnConst.SEQUENCE), dt.getString(i, "field_reference"));
            }
            if (faceListEntityMap.size() > 0) {
                faceListEntityMap.forEach((f, m) -> {
                    RedisUtil.set(FACE_LIST_KEY + m.getUuid(), m);
                });
            }
        }
    }
            }
            if (faceListEntityMap.size() > 0) {
                faceListEntityMap.forEach((f, m) -> {
                    RedisUtil.set(FACE_LIST_KEY + m.getUuid(), m);
                });
            }
        }
    }
}
product-server-admin/src/main/java/com/product/admin/service/SystemMenusService.java
@@ -72,15 +72,23 @@
        }
    }
    /**
     * 初始化菜单缓存
     */
    public void initSystemMenu() {
        initSystemMenu(null, null);
    }
    /**
     * 初始化菜单缓存单条数据
     */
    public void refreshMenu(String uuid) {
        initSystemMenu(null, new String[]{uuid});
    }
    /**
     * 初始化菜单缓存整体
     */
    public void refreshMenu() {
        initSystemMenu();
    }
    public synchronized void refreshMenuByRole(String uuid) {
@@ -92,9 +100,6 @@
        initSystemMenu(uuid, null);
    }
    public void refreshMenu() {
        initSystemMenu();
    }
    /**
     * 初始化菜单缓存