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;
}
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);
}
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);
}
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);
}
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);
}
Aggregations