Commit 8043795d by 裴大威

Merge branch 'feat-dw-1002937' into 'master'

add updateNoISBNBookGeneratorQrcode

See merge request rays/pcloud-book!726
parents 53475176 ca5aa2de
......@@ -60,6 +60,9 @@ import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
......@@ -69,7 +72,7 @@ import java.util.Map;
*/
public interface BookGroupBiz {
String updateNoISBNBookGeneratorQrcode( MultipartFile file );
/**
* 查询编辑是否有此社群书
* @param bookId
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -11,6 +11,10 @@ import java.util.concurrent.ConcurrentHashMap;
public class BookBusinessConstants {
/**
* 生成无书号二维码路由
**/
public static final String NO_ISBN_QRCODE_URI = "/group/info?rayBookId=";
/**
* 需更新微信群信息
*/
public static final Map<String, AutoUpdateGroupNumDTO> GROUP_NUM_DTO_MAP = new ConcurrentHashMap<>(128);
......
......@@ -309,6 +309,10 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
void updateSubjectByProLabel(Long proLebelId, Long subjectId);
void updateGradeByDepLabel(Long depLabelId, Long graLabelId);
Long getOldDataMax();
void insertOldData(Long id);
public Long getBookGroupId4OldData(Long raysBookId);
Long getIdByBookNameAndJoinGroupType(String bookName, Integer joinGroupType);
......
......@@ -367,6 +367,14 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
public Long getBookGroupId4OldData(Long raysBookId) {
return getSessionTemplate().selectOne(getStatement("getBookGroupId4OldData"), raysBookId);
}
@Override
public Long getOldDataMax() {
return getSessionTemplate().selectOne(getStatement("getOldDataMax"));
}
@Override
public void insertOldData(Long id) {
getSessionTemplate().insert(getStatement("insertOldData"), id);
}
@Override
public Long getIdByBookNameAndJoinGroupType(String bookName, Integer joinGroupType) {
......
package com.pcloud.book.group.tools;
import com.pcloud.book.group.vo.ExcelDataVO;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class BookExcelReader {
public static List<ExcelDataVO> readExcel( MultipartFile file ) throws IOException {
//获取文件名称
try (InputStream in = file.getInputStream()) {
// 读取excel中的数据
Workbook workbook = judegExcelEdition(file.getOriginalFilename()) ? new XSSFWorkbook(in) : new HSSFWorkbook(in);
return parseExcel(workbook);
}
}
private static boolean judegExcelEdition( String fileName ) {
return !fileName.matches("^.+\\.(?i)(xls)$");
}
private static List<ExcelDataVO> parseExcel( Workbook workbook ) {
List<ExcelDataVO> resultDataList = new ArrayList<>();
// 解析sheet
for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) {
Sheet sheet = workbook.getSheetAt(sheetNum);
// 校验sheet是否合法
if (sheet == null) {
continue;
}
// 获取第一行数据
int firstRowNum = sheet.getFirstRowNum();
Row firstRow = sheet.getRow(firstRowNum);
if (null == firstRow) {
log.warn("解析Excel失败,在第一行没有读取到任何数据!");
}
// 解析每一行的数据,构造数据对象
int rowStart = firstRowNum + 1;
int rowEnd = sheet.getPhysicalNumberOfRows();
for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) {
Row row = sheet.getRow(rowNum);
if (null == row) {
continue;
}
ExcelDataVO resultData = convertRowToData(row);
resultDataList.add(resultData);
}
}
return resultDataList;
}
private static String convertCellValueToString( Cell cell ) {
if (cell == null) {
return null;
}
String returnValue = null;
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC: //数字
Double doubleValue = cell.getNumericCellValue();
// 格式化科学计数法,取一位整数
DecimalFormat df = new DecimalFormat("0");
returnValue = df.format(doubleValue);
break;
case Cell.CELL_TYPE_STRING: //字符串
returnValue = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_BOOLEAN: //布尔
boolean booleanValue = cell.getBooleanCellValue();
returnValue = Boolean.toString(booleanValue);
break;
case Cell.CELL_TYPE_BLANK: // 空值
break;
case Cell.CELL_TYPE_FORMULA: // 公式
returnValue = cell.getCellFormula();
break;
case Cell.CELL_TYPE_ERROR: // 故障
break;
default:
break;
}
return returnValue;
}
private static ExcelDataVO convertRowToData( Row row ) {
ExcelDataVO resultData = new ExcelDataVO();
Cell cell;
int cellNum = 0;
// 序号
cell = row.getCell(cellNum++);
String num = convertCellValueToString(cell);
resultData.setNum(Integer.parseInt(num));
// 出版社名称
cell = row.getCell(cellNum++);
String agentName = convertCellValueToString(cell);
resultData.setAgentName(agentName);
// 书名
cell = row.getCell(cellNum++);
String bookName = convertCellValueToString(cell);
resultData.setBookName(bookName);
// isbn
cell = row.getCell(cellNum++);
String isbn = convertCellValueToString(cell);
resultData.setIsbn(isbn);
// 分类
cell = row.getCell(cellNum++);
String type = convertCellValueToString(cell);
resultData.setType(type);
// 二维码数量
cell = row.getCell(cellNum++);
String qrcodeNum = convertCellValueToString(cell);
resultData.setQrcodeNum(Objects.isNull(qrcodeNum) ? 0 : Integer.parseInt(qrcodeNum));
return resultData;
}
}
\ No newline at end of file
package com.pcloud.book.group.vo;
import lombok.Data;
@Data
public class ExcelDataVO {
/**
* 序号
*/
private Integer num;
/**
* 出版社名称
*/
private String agentName;
/**
* 书名
*/
private String bookName;
/**
* isbn
*/
private String isbn;
/**
* 分类
*/
private String type;
/**
* 二维码数量
*/
private Integer qrcodeNum;
}
......@@ -36,6 +36,8 @@ public class BookProps {
private static String systemEnv;
private static String wechatDomain;
public static String getJisuAppKey() {
return jisuAppKey;
}
......@@ -81,4 +83,13 @@ public class BookProps {
public void setSystemEnv(String systemEnv) {
BookProps.systemEnv = systemEnv;
}
public static String getWechatDomain() {
return wechatDomain;
}
@Value("${wechat.group.link.prefix}")
public void setWechatDomain( String wechatDomain ) {
BookProps.wechatDomain = wechatDomain;
}
}
......@@ -948,6 +948,14 @@
SELECT book_group_id FROM book_group_old_data WHERE rays_book_id = #{raysBookId}
</select>
<select id="getOldDataMax" resultType="Long">
SELECT max(rays_book_id) FROM book_group_old_data
</select>
<insert id="insertOldData" parameterType="Long">
insert into book_group_old_data (rays_book_id) value (#{id})
</insert>
<select id="getIdByBookNameAndJoinGroupType" resultType="long" parameterType="map">
select
t.id
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment