@Service
public class AppInfoUploadServiceImpl implements AppInfoUploadService {
@Autowired
private AppInfoMapper appInfoMapper;
@Autowired
private CommonMapper commonMapper;
@Override
public void uploadAppInfo(MultipartFile file) {
LogUtil.info("处理app信息数据...");
String originalFilename = file.getOriginalFilename();
if (!originalFilename.endsWith("xlsx"))
{
throw new BizException(FailedStatusEnum.MUST_EXCEL_FILE, "originalFilename:" + originalFilename);
}
XSSFWorkbook xwb = null;
try
{
List appTypeList = new ArrayList();
List appList = new ArrayList();
// 读取excel工作簿
xwb = new XSSFWorkbook(file.getInputStream());
// 读取excel的词库页
XSSFSheet sheet = xwb.getSheet("Sheet1");
Integer sellpointId=null;
String gradeName = null;
String subjectName = null;
String typeName = null;
String studyProblem = null;
String scenePic = null;
String mainAppName = null;
String mainAppPackageName = null;
String mainAppIntroduction = null;
String otherAppName = null;
String otherAppIntroduction = null;
String sellpointLatitude = null;
String addTime=null;
String lastTime=null;
AppTypePojo appTypePojo=null;
AppPojo mainAppPojo=null;
AppPojo otherAppPojo=null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (int i = 1; i <= sheet.getLastRowNum(); i++)
{
List otherAppList = new ArrayList();
XSSFRow row = sheet.getRow(i);
if (row != null)
{
Boolean mergedRegion1 = isMergedRegion(sheet, i, 1);
if (mergedRegion1) {
gradeName = getMergedRegionValue(sheet, i, 1);
}else{
XSSFCell cell = row.getCell(1);
if (cell!=null) {
gradeName=cell.getStringCellValue();
}
}
if (gradeName!=null) {
if (gradeName.contains("一年级")||gradeName.contains("二年级")) {
gradeName="一年级#二年级";
}else if (gradeName.contains("三年级")||gradeName.contains("四年级")) {
gradeName="三年级#四年级";
}else if (gradeName.contains("五年级")||gradeName.contains("六年级")) {
gradeName="五年级#六年级";
}
}
Boolean mergedRegion2 = isMergedRegion(sheet, i, 2);
if (mergedRegion2) {
subjectName = getMergedRegionValue(sheet, i, 2);
}else{
XSSFCell cell = row.getCell(2);
if (cell!=null) {
subjectName=cell.getStringCellValue();
}
}
Boolean mergedRegion3 = isMergedRegion(sheet, i, 3);
if (mergedRegion3) {
typeName = getMergedRegionValue(sheet, i, 3);
}else{
XSSFCell cell = row.getCell(3);
if (cell!=null) {
typeName=cell.getStringCellValue();
}
}
Boolean mergedRegion4 = isMergedRegion(sheet, i, 4);
if (mergedRegion4) {
scenePic = getMergedRegionValue(sheet, i, 4);
}else{
XSSFCell cell = row.getCell(4);
if (cell!=null) {
scenePic=cell.getStringCellValue();
}
}
Boolean mergedRegion9 = isMergedRegion(sheet, i, 9);
if (mergedRegion9) {
studyProblem = getMergedRegionValue(sheet, i, 9);
}else{
XSSFCell cell = row.getCell(9);
if (cell!=null) {
studyProblem=cell.getStringCellValue();
}
}
Boolean mergedRegion5 = isMergedRegion(sheet, i, 5);
if (mergedRegion5) {
mainAppName = getMergedRegionValue(sheet, i, 5);
}else{
XSSFCell cell = row.getCell(5);
if (cell!=null) {
mainAppName=cell.getStringCellValue();
}
}
Boolean mergedRegion6 = isMergedRegion(sheet, i, 6);
if (mergedRegion6) {
mainAppPackageName = getMergedRegionValue(sheet, i, 6);
}else{
XSSFCell cell = row.getCell(6);
if (cell!=null) {
mainAppPackageName=cell.getStringCellValue();
}
}
Boolean mergedRegion7 = isMergedRegion(sheet, i, 7);
if (mergedRegion7) {
mainAppIntroduction = getMergedRegionValue(sheet, i, 7);
}else{
XSSFCell cell = row.getCell(7);
if (cell!=null) {
mainAppIntroduction=cell.getStringCellValue();
}
}
Boolean mergedRegion8 = isMergedRegion(sheet, i, 8);
if (mergedRegion8) {
otherAppName = getMergedRegionValue(sheet, i, 8);
}else{
XSSFCell cell = row.getCell(8);
if (cell!=null) {
otherAppName=cell.getStringCellValue();
}
}
Integer typeId=appInfoMapper.selectTypeIdByGnameSnameTname(gradeName,subjectName,typeName);
if (typeId==null) {
CommonQueryVo commonQueryVo = new CommonQueryVo(CommonConstant.TABLE_NAME_APP_TYPE);
CommonQueryVo comm = commonMapper.selectMaxOrderNoBytableName(commonQueryVo);
commonQueryVo.setFieldName("type_id");
CommonQueryVo comm2 = commonMapper.selectMaxFieldBytableName(commonQueryVo);
Integer orderNo = comm.getOrderNo();
if (orderNo==null) {
orderNo=1;
}
String maxFieldValue = comm2.getMaxFieldValue();
Integer typeIdValue = Integer.valueOf(maxFieldValue);
if (typeIdValue==null) {
typeIdValue=1;
}
appTypePojo=new AppTypePojo(typeIdValue+1,gradeName,subjectName,typeName,1,orderNo+1);
appInfoMapper.insertAppTypeInfo(appTypePojo);
typeId=appTypePojo.getId();
appTypeList.add(appTypePojo);
}
CommonQueryVo commonMainApp = new CommonQueryVo(CommonConstant.TABLE_NAME_APP);
CommonQueryVo commMainOrder = commonMapper.selectMaxOrderNoBytableName(commonMainApp);
Integer orderNoMain=1;
if (commMainOrder!=null) {
orderNoMain=commMainOrder.getOrderNo();
}
mainAppPojo=new AppPojo(typeId,studyProblem,scenePic,mainAppName,mainAppPackageName,mainAppIntroduction,1,1,orderNoMain+1);
Date d = new Date();
String parseDate = sdf.format(d);
Date createTime = sdf.parse(parseDate);
mainAppPojo.setCreateTime(createTime);
//判断该app信息是否存在
Integer isExist=appInfoMapper.selectAppinfoIsExist(mainAppPojo);
if (isExist>0) {
Integer idMainAPP=appInfoMapper.updateAppInfo(mainAppPojo);
}else{
Integer idMainAPP=appInfoMapper.insertAppInfo(mainAppPojo);
}
appList.add(mainAppPojo);
System.out.println(mainAppPojo.toString());
System.out.println("otherAppName="+otherAppName);
if ("".equals(otherAppName)) {
System.out.println("otherAppName="+otherAppName);
}
if (otherAppName!=null&&!"".equals(otherAppName)) {
CommonQueryVo commonOtherApp = new CommonQueryVo(CommonConstant.TABLE_NAME_APP);
String[] splitOtherApp = otherAppName.split("\n");
for (int j = 0; j < splitOtherApp.length; j++) {
String[] splitMap = splitOtherApp[j].split(" ");
System.out.println("splitMap="+splitMap.toString());
String otherAppName2="";
String otherAppPackage2="";
if (splitMap.length>0) {
otherAppName2 = splitMap[0];
if (splitMap.length>1) {
otherAppPackage2 = splitMap[1];
}
CommonQueryVo commOtherOrder = commonMapper.selectMaxOrderNoBytableName(commonMainApp);
Integer orderNoOther=1;
if (commOtherOrder!=null) {
orderNoOther=commOtherOrder.getOrderNo();
}
otherAppPojo=new AppPojo(typeId,studyProblem,null,otherAppName2,otherAppPackage2,otherAppIntroduction,0,1,orderNoOther+1);
Date dOther = new Date();
String parsedOtherDate = sdf.format(dOther);
Date createdOtherTime = sdf.parse(parsedOtherDate);
otherAppPojo.setCreateTime(createdOtherTime);
//判断该app信息是否存在
Integer isExistO=appInfoMapper.selectAppinfoIsExist(otherAppPojo);
if (isExistO>0) {
Integer idOtherAPP=appInfoMapper.updateAppInfo(otherAppPojo);
}else{
Integer idOtherAPP=appInfoMapper.insertAppInfo(otherAppPojo);
}
appList.add(otherAppPojo);
}
}
System.out.println(otherAppList.toString());
}
}
}
LogUtil.info("appTypeList:" + JsonTool.toJson(appTypeList));
LogUtil.info("appList:" + JsonTool.toJson(appList));
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
xwb.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
/**
* @author lpf
* TODO判断是否为合并单元格
* @method isMergedRegion
* @param sheet
* @param row
* @param column
* @return
* @return Boolean
* @date 2019年4月10日 下午2:18:44
*/
private Boolean isMergedRegion(XSSFSheet sheet,int row,int column){
int sheetMergeCount = sheet.getNumMergedRegions();
for (int i = 0; i < sheetMergeCount; i++) {
CellRangeAddress range = sheet.getMergedRegion(i);
int firstColumn = range.getFirstColumn();
int lastColumn = range.getLastColumn();
int firstRow = range.getFirstRow();
int lastRow = range.getLastRow();
if (row>=firstRow&&row<=lastRow) {
if (column>=firstColumn&&column<=lastColumn) {
return true;
}
}
}
return false;
}
/**
* @author lpf
* TODO获取合并单元格的值
* @method getMergedRegionValue
* @param sheet
* @param row
* @param column
* @return
* @return String
* @date 2019年4月10日 下午2:26:21
*/
public String getMergedRegionValue(XSSFSheet sheet ,int row , int column){
int sheetMergeCount = sheet.getNumMergedRegions();
for(int i = 0 ; i < sheetMergeCount ; i++){
CellRangeAddress ca = sheet.getMergedRegion(i);
int firstColumn = ca.getFirstColumn();
int lastColumn = ca.getLastColumn();
int firstRow = ca.getFirstRow();
int lastRow = ca.getLastRow();
if(row >= firstRow && row <= lastRow){
if(column >= firstColumn && column <= lastColumn){
XSSFRow xRow = sheet.getRow(firstRow);
XSSFCell xCell = xRow.getCell(firstColumn);
return getCellValue(xCell);
}
}
}
return null ;
}
/**
* @author lpf
* TODO获取单元格的值
* @method getCellValue
* @param cell
* @return
* @return String
* @date 2019年4月10日 下午2:48:12
*/
public String getCellValue(XSSFCell cell){
if(cell == null) return "";
if(cell.getCellType() == XSSFCell.CELL_TYPE_STRING){
return cell.getStringCellValue();
}else if(cell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN){
return String.valueOf(cell.getBooleanCellValue());
}else if(cell.getCellType() == XSSFCell.CELL_TYPE_FORMULA){
return cell.getCellFormula() ;
}else if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC){
return String.valueOf(cell.getNumericCellValue());
}
return "";
}