排课结果基础版本备份

Posted mjtabu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排课结果基础版本备份相关的知识,希望对你有一定的参考价值。

 /**
     * 
     * @Title:paikeJieGuoBackup
     * @author:彭嘉
     * @date:2019年11月13日 上午11:31:14
     * @Description:TODO(排课结果备份)
     * @param pkJieGuoBackUp
     *            --排课结果备份备份表对象
     * @return Map<String,String> <br>
     *         key=> code value=> fail:备份失败,success:备份成功,error:方法出错 <br>
     *         key=> tip value=> 提示信息
     * @throws Exception
     */
    public Map<String, String> paikeJieGuoBackup(PkJieGuoBackUp pkJieGuoBackUp) throws Exception {
        // 需要返回的对象
        Map<String,String> map=new HashMap<String,String>();
        if (QwyUtil.isNullAndEmpty(pkJieGuoBackUp)) {
            logger.info("pkJieGuoBackUp排课结果备份对象为空");
            map.put("code", "fail");
            map.put("tip", "pkJieGuoBackUp排课结果为空");
            return map;
        }
        // 备份类型
        String backupType = QwyUtil.getIsNULL(pkJieGuoBackUp.getType());
        if (QwyUtil.isNullAndEmpty(backupType)) {
            logger.info("backupType备份类型为空");
            map.put("code", "fail");
            map.put("tip", "backupType备份类型为空");
            return map;
        }
        // 排课结果id
        String pkJieGuoId = QwyUtil.getIsNULL(pkJieGuoBackUp.getJieguo_id());
        if (QwyUtil.isNullAndEmpty(pkJieGuoId)) {
            logger.info("pkJieGuoId排课结果为空");
            map.put("code", "fail");
            map.put("tip", "pkJieGuoId排课结果为空");
            return map;
        }

        // 1.获取学校代码
        SystemParameter systemParameter = systemParameterDao.findSystemParameter();
        String schoolCode = systemParameter.getStr("schoolCode");
        logger.info("schoolCode:" + schoolCode);
        // 备份数据库的名称
        String dbName = "";
        // 备份数据库是否存在
        boolean isExistDB = false;
        if (!QwyUtil.isNullAndEmpty(schoolCode)) {
            dbName = schoolCode + "_pk_jieguo_backup_db";
        } else {
            logger.info("schoolCode学校代码为空");
            map.put("code", "fail");
            map.put("tip", "schoolCode学校代码为空");
            return map;
        }

        isExistDB = pkjgBackUpDao.isExistDB(dbName);
        logger.info("排课结果备份数据库是否存在:" + isExistDB);
        // 2.判断数据库是否存在
        if (!isExistDB) {
            // 数据库不存在,创建数据库
            boolean isCreateSuccess = pkjgBackUpDao.createPkJieGuoBackUpDB(schoolCode);
            logger.info("排课结果备份数据库是否创建成功:" + isCreateSuccess);
            if (isCreateSuccess) {
                // 备份库创建成功将isExistDB改为true
                isExistDB = true;
            } else {
                // 创建失败
                logger.info("排课结果备份数据库创建失败");
                map.put("code", "fail");
                map.put("tip", "排课结果备份数据库创建失败");
                return map;
            }
        }
        // 3.判断排课结果备份表是否存在
        boolean isExistBackUpTable = pkjgBackUpDao.isExistTable(dbName, "pk_jieguo_backup");
        logger.info("排课结果备份表是否存在: " + isExistBackUpTable);
        // 不存在创建
        if (!isExistBackUpTable) {
            boolean isSuccessCreateBackUpTable = pkjgBackUpDao.createBackUpTable(dbName);
            logger.info("排课结果备份表是否创建成功: " + isSuccessCreateBackUpTable);
            if (!isSuccessCreateBackUpTable) {
                map.put("code", "fail");
                map.put("tip", "排课结果备份表创建失败");
                return map;
            }

        }
        // 4.判断是否备份
        synchronized (pkJieGuoId) {
            Boolean isBackUp = false;
            if ("0".equals(backupType)) {
                isBackUp = pkjgBackUpDao.isBackUpPaikeJieGuo(dbName, pkJieGuoId, backupType, null);
            } else {
                isBackUp = pkjgBackUpDao.isBackUpPaikeJieGuo(dbName, pkJieGuoId, backupType,
                    pkJieGuoBackUp.getBf_jieguo_name());
            }

            logger.info("是否备份过: " + isBackUp);
            if (isBackUp) {// 备份过不需要再次备份
                map.put("code", "success");
                map.put("tip", "已经备份过,请不要重复备份");
                return map;
            } else {// 没有备份开始备份
                // 在排课结果备份表保存一条备份记录
                String pkJieGuoBackupId = pkjgBackUpDao.pkJieGuoBackupSava(pkJieGuoBackUp, dbName);
                logger.info("排课结果备份表的新增记录id:" + pkJieGuoBackupId);
                boolean isSava = !QwyUtil.isNullAndEmpty(pkJieGuoBackupId);
                logger.info("排课结果备份记录是否保存成功: " + isSava);
                // 备份记录保存成功
                if (isSava) {
                    // 排课结果备份记录保存成功后,备份排课结果详情

                    // 排课结果详情备份表的表名
                    String pjd_backup_table_name = "pk_jieguo_detail_backup_" + pkJieGuoId.replace("-", "_");

                    // 判断排课结果详情备份表是否存在
                    boolean isCreatePjdBackupTable = pkjgBackUpDao.isExistTable(dbName, pjd_backup_table_name);
                    logger.info("排课结果详情备份表是否存在:" + isCreatePjdBackupTable);
                    // 排课结果详情备份表备份
                    boolean backupPkJieGuoDetail = pkjgBackUpDao.backupPkJieGuoDetail(isCreatePjdBackupTable, dbName,
                        pkJieGuoBackupId, pkJieGuoId);
                    logger.info("排课结果详情备份是否成功:" + backupPkJieGuoDetail);
                    if (backupPkJieGuoDetail) {
                        map.put("code", "success");
                        map.put("tip", "备份成功");
                        return map;
                    } else {
                        map.put("code", "fail");
                        map.put("tip", "排课结果详情备份失败");
                        return map;
                    }

                } else {
                    map.put("code", "fail");
                    map.put("tip", "排课结果备份表保存记录失败");
                    return map;
                }
            }
        }

    }

 

以上是关于排课结果基础版本备份的主要内容,如果未能解决你的问题,请参考以下文章

《团队-排课系统-最终程序》

Xcode 4.6 的备份代码片段

《团队-排课软件-代码设计规范》

如何为 XSLT 代码片段配置 CruiseControl 的 C# 版本?

团队-排课系统-开发文档

《团队-排课系统一阶段互评》