Search in sources :

Example 1 with DecTextbook

use of com.bc.pmpheep.back.po.DecTextbook in project pmph by BCSquad.

the class ExcelHelper method fillDecTextbookData.

private ColumnProperties fillDecTextbookData(List<DecTextbook> decTextbooks, Row row, ColumnProperties properties) {
    int colCount = properties.getColCount();
    int[] maxLength = properties.getMaxLength();
    if (CollectionUtil.isEmpty(decTextbooks)) {
        for (int i = 0; i < 7; i++) {
            row.createCell(colCount++);
        }
    } else {
        String value;
        List<StringBuilder> builders = new ArrayList<>(7);
        for (int i = 0; i < 7; i++) {
            builders.add(new StringBuilder());
        }
        boolean isFirst = true;
        for (DecTextbook decTextbook : decTextbooks) {
            if (isFirst == false) {
                for (StringBuilder builder : builders) {
                    builder.append("\r\n");
                }
            } else {
                isFirst = false;
            }
            int index = 0;
            value = decTextbook.getMaterialName();
            if (StringUtil.isEmpty(value)) {
                value = "";
            }
            builders.get(index++).append(value);
            if (value.length() > maxLength[colCount]) {
                maxLength[colCount] = value.length();
            }
            colCount++;
            value = "其他";
            switch(decTextbook.getRank()) {
                case 0:
                    value = "无";
                    break;
                case 1:
                    value = "国家";
                    break;
                case 2:
                    value = "省部";
                    break;
                case 3:
                    value = "协编";
                    break;
                case 4:
                    value = "校本";
                    break;
                case 5:
                    value = "其他";
                    break;
                default:
                    break;
            }
            builders.get(index++).append(value);
            if (value.length() > maxLength[colCount]) {
                maxLength[colCount] = value.length();
            }
            colCount++;
            value = "无";
            switch(decTextbook.getPosition()) {
                case 1:
                    value = "主编";
                    break;
                case 2:
                    value = "副主编";
                    break;
                case 3:
                    value = "编委";
                    break;
                default:
                    break;
            }
            builders.get(index++).append(value);
            if (value.length() > maxLength[colCount]) {
                maxLength[colCount] = value.length();
            }
            colCount++;
            value = decTextbook.getIsDigitalEditor() ? "是" : "否";
            builders.get(index++).append(value);
            if (value.length() > maxLength[colCount]) {
                maxLength[colCount] = value.length();
            }
            colCount++;
            value = decTextbook.getPublisher();
            if (StringUtil.isEmpty(value)) {
                value = "";
            }
            builders.get(index++).append(value);
            if (value.length() > maxLength[colCount]) {
                maxLength[colCount] = value.length();
            }
            colCount++;
            if (ObjectUtil.isNull(decTextbook.getPublishDate())) {
                value = "";
            } else {
                value = sdf.format(decTextbook.getPublishDate());
            }
            builders.get(index++).append(value);
            if (value.length() > maxLength[colCount]) {
                maxLength[colCount] = value.length();
            }
            colCount++;
            value = decTextbook.getIsbn();
            if (StringUtil.isEmpty(value)) {
                value = "";
            }
            builders.get(index++).append(value);
            if (value.length() > maxLength[colCount]) {
                maxLength[colCount] = value.length();
            }
            // 列数复位
            colCount = properties.getColCount();
        }
        for (int i = 0; i < 7; i++) {
            Cell cell = row.createCell(colCount++);
            value = builders.get(i).toString();
            cell.setCellValue(value);
        }
    }
    properties.setColCount(colCount);
    properties.setMaxLength(maxLength);
    return properties;
}
Also used : DecTextbook(com.bc.pmpheep.back.po.DecTextbook) ArrayList(java.util.ArrayList) Cell(org.apache.poi.ss.usermodel.Cell)

Example 2 with DecTextbook

use of com.bc.pmpheep.back.po.DecTextbook in project pmph by BCSquad.

the class MigrationStageSix method decTextbook.

/**
 * 作家教材编写情况表
 */
protected void decTextbook() {
    // 要迁移的旧库表名
    String tableName = "writer_materwrite ";
    // 增加new_pk字段
    JdbcHelper.addColumn(tableName);
    String sql = "select wm.materwriteid,wm.writerid,wm.matername,wm.publishing," + "case when level like '%1%' then 1 when level like '%2%' then 2 " + "when level like '%3%,%4%' then 4 " + "when level like '%3%' then 5 when level like '%4%' then 4 " + "else 5 end rank," + "case when wm.duty like '%1%' then 1 when wm.duty like '%2%' then 2 " + "else 3 end position,wm.booknumber,wm.remark,wm.publisdate,wd.new_pk id " + "from writer_materwrite wm " + "left join writer_declaration wd on wd.writerid=wm.writerid ";
    List<Map<String, Object>> maps = JdbcHelper.getJdbcTemplate().queryForList(sql);
    // 迁移成功的条目数
    int count = 0;
    int declarationidCount = 0;
    List<Map<String, Object>> excel = new LinkedList<>();
    Map<String, Object> result = new LinkedHashMap<>();
    int correctCount = 0;
    int[] state = { 0 };
    StringBuilder reason = new StringBuilder();
    StringBuilder dealWith = new StringBuilder();
    /* 开始遍历查询结果 */
    for (Map<String, Object> map : maps) {
        StringBuilder sb = new StringBuilder();
        // 旧表主键值
        String id = (String) map.get("materwriteid");
        // 申报表id
        Long declarationid = (Long) map.get("id");
        // 教材名称
        String materialName = (String) map.get("matername");
        // 教材级别
        Long rankJudge = (Long) map.get("rank");
        // 编写职务
        Long positionJudge = (Long) map.get("position");
        // 出版社
        String publisher = (String) map.get("publishing");
        // 出版时间
        Date publishDate = (Date) map.get("publisdate");
        // 标准书号
        String isbn = (String) map.get("booknumber");
        DecTextbook decTextbook = new DecTextbook();
        DecTextbookPmph decTextbookPmph = new DecTextbookPmph();
        if (ObjectUtil.isNull(declarationid) || declarationid.intValue() == 0) {
            map.put(SQLParameters.EXCEL_EX_HEADER, sb.append("未找到申报表对应的关联结果。"));
            excel.add(map);
            logger.debug("未找到申报表对应的关联结果,此结果将被记录在Excel中");
            declarationidCount++;
            if (state[0] == 0) {
                reason.append("找不到对应的申报作家。");
                dealWith.append("放弃迁移。");
                state[0] = 1;
            }
            continue;
        }
        if (StringUtil.notEmpty(isbn)) {
            isbn = isbn.trim();
            isbn = isbn.replace("ISBN", "ISBN ").replace("isbn", "ISBN ").replace(":", "").replace(":", "").replace("、", "/").replace(".", "·").replace("*", "·").replace("•", "·");
        }
        Integer rank;
        if (ObjectUtil.isNull(rankJudge)) {
            rank = 0;
        } else {
            rank = rankJudge.intValue();
        }
        if (ObjectUtil.isNull(publisher)) {
            publisher = "未填写";
        }
        int position;
        if (ObjectUtil.isNull(positionJudge)) {
            position = 5;
        } else {
            position = positionJudge.intValue();
        }
        long pk;
        if (!"人民卫生出版社".equals(publisher.trim())) {
            decTextbook.setDeclarationId(declarationid);
            decTextbook.setMaterialName(materialName);
            decTextbook.setRank(rank);
            decTextbook.setPosition(position);
            decTextbook.setPublisher(publisher);
            decTextbook.setPublishDate(publishDate);
            decTextbook.setIsbn(isbn);
            // 备注
            decTextbook.setNote((String) map.get("remark"));
            // 显示顺序
            decTextbook.setSort(999);
            decTextbook = decTextbookService.addDecTextbook(decTextbook);
            pk = decTextbook.getId();
        } else {
            decTextbookPmph.setDeclarationId(declarationid);
            decTextbookPmph.setMaterialName(materialName);
            decTextbookPmph.setRank(rank);
            decTextbookPmph.setPosition(position);
            decTextbookPmph.setPublishDate(publishDate);
            decTextbookPmph.setIsbn(isbn);
            // 备注
            decTextbookPmph.setNote((String) map.get("remark"));
            // 显示顺序
            decTextbookPmph.setSort(999);
            decTextbookPmph = decTextbookPmphService.addDecTextbookPmph(decTextbookPmph);
            pk = decTextbookPmph.getId();
        }
        JdbcHelper.updateNewPrimaryKey(tableName, pk, "materwriteid", id);
        count++;
        if (null == map.get("exception")) {
            correctCount++;
        }
    }
    if (excel.size() > 0) {
        try {
            excelHelper.exportFromMaps(excel, "作家教材编写情况表", "dec_textbook");
        } catch (IOException ex) {
            logger.error("异常数据导出到Excel失败", ex);
        }
    }
    if (correctCount != maps.size()) {
        result.put(SQLParameters.EXCEL_HEADER_TABLENAME, "dec_textbook");
        result.put(SQLParameters.EXCEL_HEADER_DESCRIPTION, "作家教材编写情况表");
        result.put(SQLParameters.EXCEL_HEADER_SUM_DATA, maps.size());
        result.put(SQLParameters.EXCEL_HEADER_MIGRATED_DATA, count);
        result.put(SQLParameters.EXCEL_HEADER_CORECT_DATA, correctCount);
        result.put(SQLParameters.EXCEL_HEADER_TRANSFERED_DATA, count - correctCount);
        result.put(SQLParameters.EXCEL_HEADER_NO_MIGRATED_DATA, maps.size() - count);
        result.put(SQLParameters.EXCEL_HEADER_EXCEPTION_REASON, reason.toString());
        result.put(SQLParameters.EXCEL_HEADER_DEAL_WITH, dealWith.toString());
        SQLParameters.STATISTICS_RESULT.add(result);
    }
    logger.info("未找到申报表对应的关联结果数量:{}", declarationidCount);
    logger.info("writer_materwrite表迁移完成,异常条目数量:{}", excel.size());
    logger.info("原数据库中共有{}条数据,迁移了{}条数据", maps.size(), count);
    // 记录信息
    Map<String, Object> msg = new HashMap<String, Object>();
    msg.put("result", "" + tableName + "  表迁移完成" + count + "/" + maps.size());
    SQLParameters.STATISTICS.add(msg);
}
Also used : HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) DecTextbook(com.bc.pmpheep.back.po.DecTextbook) IOException(java.io.IOException) LinkedList(java.util.LinkedList) Date(java.util.Date) DecTextbookPmph(com.bc.pmpheep.back.po.DecTextbookPmph) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap)

Example 3 with DecTextbook

use of com.bc.pmpheep.back.po.DecTextbook in project pmph by BCSquad.

the class MigrationStageSix method decTextbookOther.

protected void decTextbookOther() {
    // 要迁移的旧库表名
    String tableName = "writer_othermaterwrite ";
    // 增加new_pk字段
    JdbcHelper.addColumn(tableName);
    String sql = "select wo.othermaterwriteid,wo.writerid,wo.matername," + "case when wo.duty like '%1%' then 1 when wo.duty like '%2%' then 2 " + "else 3 end position," + "wo.publishing," + "if(wo.publisdate='0000-00-00 00:00:00'," + "STR_TO_DATE('2017-01-01 14:17:17','%Y-%c-%d %H:%i:%s'),wo.publisdate)publisdates," + "wo.booknumber,wo.remark,wd.new_pk id " + "from writer_othermaterwrite wo " + "left join writer_declaration wd on wd.writerid=wo.writerid ";
    List<Map<String, Object>> maps = JdbcHelper.getJdbcTemplate().queryForList(sql);
    // 迁移成功的条目数
    int count = 0;
    int declarationidCount = 0;
    List<Map<String, Object>> excel = new LinkedList<>();
    Map<String, Object> result = new LinkedHashMap<>();
    int correctCount = 0;
    int[] state = { 0 };
    StringBuilder reason = new StringBuilder();
    StringBuilder dealWith = new StringBuilder();
    /* 开始遍历查询结果 */
    for (Map<String, Object> map : maps) {
        StringBuilder sb = new StringBuilder();
        // 旧表主键值
        String id = (String) map.get("othermaterwriteid");
        // 申报表id
        Long declarationid = (Long) map.get("id");
        // 教材名称
        String materialName = (String) map.get("matername");
        // 编写职务
        Long positionJudge = (Long) map.get("position");
        // 出版社
        String publisher = (String) map.get("publishing");
        // 出版时间
        Date publishDate = (Date) map.get("publisdates");
        // 标准书号
        String isbn = (String) map.get("booknumber");
        DecTextbook decTextbook = new DecTextbook();
        DecTextbookPmph decTextbookPmph = new DecTextbookPmph();
        if (ObjectUtil.isNull(declarationid) || declarationid.intValue() == 0) {
            map.put(SQLParameters.EXCEL_EX_HEADER, sb.append("未找到申报表对应的关联结果。"));
            excel.add(map);
            logger.debug("未找到申报表对应的关联结果,此结果将被记录在Excel中");
            declarationidCount++;
            if (state[0] == 0) {
                reason.append("找不到对应的申报作家。");
                dealWith.append("放弃迁移。");
                state[0] = 1;
            }
            continue;
        }
        if (StringUtil.notEmpty(isbn)) {
            isbn = isbn.trim();
            isbn = isbn.replace("ISBN", "ISBN ").replace("isbn", "ISBN ").replace(":", "").replace(":", "").replace("、", "/").replace(".", "·").replace("*", "·").replace("•", "·");
        }
        if (ObjectUtil.isNull(publisher)) {
            publisher = "未填写";
        }
        int position;
        if (ObjectUtil.isNull(positionJudge)) {
            position = 5;
        } else {
            position = positionJudge.intValue();
        }
        long pk;
        if (!"人民卫生出版社".equals(publisher.trim())) {
            decTextbook.setDeclarationId(declarationid);
            decTextbook.setMaterialName(materialName);
            // 教材级别(设置成无)
            decTextbook.setRank(0);
            decTextbook.setPosition(position);
            String publishers = publisher.trim();
            if (StringUtil.length(publishers) > 50 || "-1819".equals(id)) {
                publishers.substring(0, 7);
                decTextbook.setPublisher(publishers);
            } else {
                decTextbook.setPublisher(publishers);
            }
            decTextbook.setPublishDate(publishDate);
            decTextbook.setIsbn(isbn);
            // 备注
            decTextbook.setNote((String) map.get("remark"));
            // 显示顺序
            decTextbook.setSort(999);
            decTextbook = decTextbookService.addDecTextbook(decTextbook);
            pk = decTextbook.getId();
        } else {
            decTextbookPmph.setDeclarationId(declarationid);
            decTextbookPmph.setMaterialName(materialName);
            // 教材级别(设置成无)
            decTextbookPmph.setRank(0);
            decTextbookPmph.setPosition(position);
            decTextbookPmph.setPublishDate(publishDate);
            decTextbookPmph.setIsbn(isbn);
            // 备注
            decTextbookPmph.setNote((String) map.get("remark"));
            // 显示顺序
            decTextbookPmph.setSort(999);
            decTextbookPmph = decTextbookPmphService.addDecTextbookPmph(decTextbookPmph);
            pk = decTextbookPmph.getId();
        }
        JdbcHelper.updateNewPrimaryKey(tableName, pk, "othermaterwriteid", id);
        count++;
        if (null == map.get("exception")) {
            correctCount++;
        }
    }
    if (excel.size() > 0) {
        try {
            excelHelper.exportFromMaps(excel, "作家教材其它编写情况表", "dec_textbookOther");
        } catch (IOException ex) {
            logger.error("异常数据导出到Excel失败", ex);
        }
    }
    if (correctCount != maps.size()) {
        result.put(SQLParameters.EXCEL_HEADER_TABLENAME, "dec_textbookOther");
        result.put(SQLParameters.EXCEL_HEADER_DESCRIPTION, "作家其他教材编写情况表");
        result.put(SQLParameters.EXCEL_HEADER_SUM_DATA, maps.size());
        result.put(SQLParameters.EXCEL_HEADER_MIGRATED_DATA, count);
        result.put(SQLParameters.EXCEL_HEADER_CORECT_DATA, correctCount);
        result.put(SQLParameters.EXCEL_HEADER_TRANSFERED_DATA, count - correctCount);
        result.put(SQLParameters.EXCEL_HEADER_NO_MIGRATED_DATA, maps.size() - count);
        result.put(SQLParameters.EXCEL_HEADER_EXCEPTION_REASON, reason.toString());
        result.put(SQLParameters.EXCEL_HEADER_DEAL_WITH, dealWith.toString());
        SQLParameters.STATISTICS_RESULT.add(result);
    }
    logger.info("未找到申报表对应的关联结果数量:{}", declarationidCount);
    logger.info("writer_othermaterwrite表迁移完成,异常条目数量:{}", excel.size());
    logger.info("原数据库中共有{}条数据,迁移了{}条数据", maps.size(), count);
    // 记录信息
    Map<String, Object> msg = new HashMap<String, Object>();
    msg.put("result", "" + tableName + "  表迁移完成" + count + "/" + maps.size());
    SQLParameters.STATISTICS.add(msg);
}
Also used : HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) DecTextbook(com.bc.pmpheep.back.po.DecTextbook) IOException(java.io.IOException) LinkedList(java.util.LinkedList) Date(java.util.Date) DecTextbookPmph(com.bc.pmpheep.back.po.DecTextbookPmph) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap)

Example 4 with DecTextbook

use of com.bc.pmpheep.back.po.DecTextbook in project pmph by BCSquad.

the class DecTextbookServiceTest method testAddDecTextbook.

@Test
@Rollback(Const.ISROLLBACK)
public void testAddDecTextbook() {
    DecTextbook decTextbook = new DecTextbook();
    decTextbook.setDeclarationId(2L);
    decTextbook.setMaterialName("社会心理学");
    decTextbook.setRank(2);
    decTextbook.setPosition(1);
    decTextbook.setPublisher("人民出版社");
    decTextbook.setPublishDate(new Date());
    decTextbook.setIsbn("987");
    decTextbook.setNote("专业选修");
    decTextbook.setSort(12);
    decTextbook = decTextbookService.addDecTextbook(decTextbook);
    Assert.assertTrue("添加数据", decTextbook.getId() > 0);
}
Also used : DecTextbook(com.bc.pmpheep.back.po.DecTextbook) Date(java.util.Date) Test(org.junit.Test) BaseTest(com.bc.pmpheep.test.BaseTest) Rollback(org.springframework.test.annotation.Rollback)

Example 5 with DecTextbook

use of com.bc.pmpheep.back.po.DecTextbook in project pmph by BCSquad.

the class DecTextbookServiceTest method testUpdateDecTextbook.

@Test
@Rollback(Const.ISROLLBACK)
public void testUpdateDecTextbook() {
    DecTextbook decTextbook = add();
    decTextbook.setIsbn("666");
    decTextbook.setPublishDate(new Date());
    Integer count = decTextbookService.updateDecTextbook(decTextbook);
    Assert.assertTrue("数据更新失败", count > 0);
}
Also used : DecTextbook(com.bc.pmpheep.back.po.DecTextbook) Date(java.util.Date) Test(org.junit.Test) BaseTest(com.bc.pmpheep.test.BaseTest) Rollback(org.springframework.test.annotation.Rollback)

Aggregations

DecTextbook (com.bc.pmpheep.back.po.DecTextbook)13 DecTextbookPmph (com.bc.pmpheep.back.po.DecTextbookPmph)6 Date (java.util.Date)6 DecAcade (com.bc.pmpheep.back.po.DecAcade)5 DecCourseConstruction (com.bc.pmpheep.back.po.DecCourseConstruction)5 DecEduExp (com.bc.pmpheep.back.po.DecEduExp)5 DecLastPosition (com.bc.pmpheep.back.po.DecLastPosition)5 DecNationalPlan (com.bc.pmpheep.back.po.DecNationalPlan)5 DecResearch (com.bc.pmpheep.back.po.DecResearch)5 DecTeachExp (com.bc.pmpheep.back.po.DecTeachExp)5 DecWorkExp (com.bc.pmpheep.back.po.DecWorkExp)5 ArrayList (java.util.ArrayList)5 DecAcadeReward (com.bc.pmpheep.back.po.DecAcadeReward)4 DecAchievement (com.bc.pmpheep.back.po.DecAchievement)4 DecClinicalReward (com.bc.pmpheep.back.po.DecClinicalReward)4 DecIntention (com.bc.pmpheep.back.po.DecIntention)4 DecMonograph (com.bc.pmpheep.back.po.DecMonograph)4 DecMoocDigital (com.bc.pmpheep.back.po.DecMoocDigital)4 DecPublishReward (com.bc.pmpheep.back.po.DecPublishReward)4 DecSci (com.bc.pmpheep.back.po.DecSci)4